diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000000000000000000000000000000000000..d284ce5697c3da6faa9ccfdce2e8a131c22f2682
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,15 @@
+#
+# drop.org apache configuration
+#
+
+# Archive feature:
+#<Files archive>
+#  ForceType application/x-httpd-php
+#</Files>
+
+# Customized server error messages:
+ErrorDocument 400 /error.php
+ErrorDocument 402 /error.php
+ErrorDocument 403 /error.php
+ErrorDocument 404 /error.php
+ErrorDocument 500 /error.php
diff --git a/error.php b/error.php
new file mode 100644
index 0000000000000000000000000000000000000000..68aa86b24a0be4c2e706a4b1ebdc82f65073e042
--- /dev/null
+++ b/error.php
@@ -0,0 +1,42 @@
+<?
+#  Future improvements:
+#  --------------------
+#  1. Automatically report all errors by e-mail.
+#  2. Keep a list of all errors either on file or in a MySQL table.
+#  3. Auto-redirect visitor to main page within x seconds.
+?>
+
+<H1>Oops, an error occured!</H1>
+<PRE>
+
+<B>Temporary debug output:</B><BR>
+  * STATUS...: <? echo $REDIRECT_STATUS; ?><BR>
+  * URL......: <? echo $REDIRECT_URL; ?><BR>
+  * METHDOD..: <? echo $REQUEST_METHOD; ?><BR>
+
+<?
+ switch($REDIRECT_STATUS) {
+   case 500:
+    $message = "500 error - internal server error";
+    break;
+   case 404:
+    $message = "404 error - document not found";
+    break;
+   case 403:
+    $message = "403 error - access denied - forbidden";
+    break;
+   case 401:
+    $message = "401 error - authorization required";
+    break;
+   case 401:
+    $message = "400 error - bad request";
+    break;
+   default:
+    $message = "unknown error";
+ }
+?>
+
+<B>Processed output:</B><BR>
+  * <? echo $message; ?><BR>
+
+</PRE>