diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000..45b0fbf
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,15 @@
+# vim:ft=apache:
+ErrorDocument 400 /errors/400.php
+ErrorDocument 401 /errors/401.php
+ErrorDocument 403 /errors/403.php
+ErrorDocument 404 /errors/404.php
+ErrorDocument 410 /errors/410.php
+ErrorDocument 414 /errors/414.php
+ErrorDocument 500 /errors/500.php
+
+RedirectMatch 404 /\.git
+RedirectMatch 404 /\.templates
+RedirectMatch 404 /src
+RedirectMatch 404 /README.md
+RedirectMatch 404 /LICENSE
+RedirectMatch 404 /*.sh
diff --git a/errors/400.php b/errors/400.php
new file mode 100644
index 0000000..747980e
--- /dev/null
+++ b/errors/400.php
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
+		<link href="/errors/styles/styles.css" type="text/css" rel="stylesheet" />
+		<title>400 Bad Request</title>
+	</head>
+	<body>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
+		<div class="content">
+			<div class="section">
+				<pre>
+ ___           ___
+|__ \__      _|__ \
+  / /\ \ /\ / / / /
+ |_|  \ V  V / |_|
+ (_)   \_/\_/  (_)
+				</pre>
+				<h1>400</h1>
+				<p>You done fucked up, Aaron</p>
+				<p>Your browser sent an invalid request. Try again. If this keeps happening, contact the site administrator.</p>
+			</div>
+		</div>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
+	</body>
+</html>
diff --git a/errors/401.php b/errors/401.php
new file mode 100644
index 0000000..1cb4d74
--- /dev/null
+++ b/errors/401.php
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
+		<link href="/errors/styles/styles.css" type="text/css" rel="stylesheet" />
+		<title>401 Unauthorized</title>
+	</head>
+	<body>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
+		<div class="content">
+			<div class="section">
+				<pre>
+ /\/|        /\/|
+|/\/_      _|/\/ 
+   \ \ /\ / /    
+    \ V  V /     
+     \_/\_/      
+				</pre>
+				<h1>401</h1>
+				<p>You're not authorized to access this resource.</p>
+				<p>If you think this is in error, contact the site administrator.</p>
+			</div>
+		</div>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
+	</body>
+</html>
diff --git a/errors/403.php b/errors/403.php
new file mode 100644
index 0000000..4b21377
--- /dev/null
+++ b/errors/403.php
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
+		<link href="/errors/styles/styles.css" type="text/css" rel="stylesheet" />
+		<title>403 Forbidden</title>
+	</head>
+	<body>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
+		<div class="content">
+			<div class="section">
+				<pre>
+__            __
+\ \__      __/ /
+ \ \ \ /\ / / / 
+ / /\ V  V /\ \ 
+/_/  \_/\_/  \_\
+				</pre>
+				<h1>403</h1>
+				<p>You don't have permission to access this resource.</p>
+				<p>If you think this is in error, contact the site administrator.</p>
+			</div>
+		</div>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
+	</body>
+</html>
diff --git a/errors/404.php b/errors/404.php
new file mode 100644
index 0000000..ca85fcc
--- /dev/null
+++ b/errors/404.php
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
+		<link href="/errors/styles/styles.css" type="text/css" rel="stylesheet" />
+		<title>404 Not Found</title>
+	</head>
+	<body>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
+		<div class="content">
+			<div class="section">
+				<pre>
+                   
+  _____      _____ 
+ / _ \ \ /\ / / _ \
+|  __/\ V  V /  __/
+ \___| \_/\_/ \___|
+				</pre>
+				<h1>404</h1>
+				<p>Yeah, we couldn't find that one. Sorry.</p>
+				<p>Try your request again and, if it keeps happening, contact the site administrator.</p>
+			</div>
+		</div>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
+	</body>
+</html>
diff --git a/errors/410.php b/errors/410.php
new file mode 100644
index 0000000..f914e7e
--- /dev/null
+++ b/errors/410.php
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
+		<link href="/errors/styles/styles.css" type="text/css" rel="stylesheet" />
+		<title>410 Gone</title>
+	</head>
+	<body>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
+		<div class="content">
+			<div class="section">
+				<pre>
+       
+       
+       
+ _ _ _ 
+(_|_|_)
+				</pre>
+				<h1>410</h1>
+				<p>Whatever's here isn't anymore.</p>
+			</div>
+		</div>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
+	</body>
+</html>
diff --git a/errors/414.php b/errors/414.php
new file mode 100644
index 0000000..96b0161
--- /dev/null
+++ b/errors/414.php
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
+		<link href="/errors/styles/styles.css" type="text/css" rel="stylesheet" />
+		<title>414 URI Too Long</title>
+	</head>
+	<body>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
+		<div class="content">
+			<div class="section">
+				<pre>
+                                                                          
+  _____      _____   ___   ___   ___   ___   ___   ___   ___   ___   ___  
+ / _ \ \ /\ / / _ \ / _ \ / _ \ / _ \ / _ \ / _ \ / _ \ / _ \ / _ \ / _ \ 
+| (_) \ V  V / (_) | (_) | (_) | (_) | (_) | (_) | (_) | (_) | (_) | (_) |
+ \___/ \_/\_/ \___/ \___/ \___/ \___/ \___/ \___/ \___/ \___/ \___/ \___/ 
+				</pre>
+				<h1>414</h1>
+				<p>The request you sent had a URI that was waaaaayy too long.</p>
+				<p>I mean just look at the URL in your URL bar. It's huge.</p>
+			</div>
+		</div>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
+	</body>
+</html>
diff --git a/errors/500.php b/errors/500.php
new file mode 100644
index 0000000..b9422ad
--- /dev/null
+++ b/errors/500.php
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
+		<link href="/errors/styles/styles.css" type="text/css" rel="stylesheet" />
+		<title>500 Internal Server Error</title>
+	</head>
+	<body>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
+		<div class="content">
+			<div class="section">
+				<pre>
+   ____            ____  
+  / __ \__      __/ __ \ 
+ / / _` \ \ /\ / / / _` |
+| | (_| |\ V  V / | (_| |
+ \ \__,_| \_/\_/ \ \__,_|
+  \____/          \____/ 
+				</pre>
+				<h1>500</h1>
+				<p>Something bad happened. Contact the site administrator and mention the error "500", the URL you tried to access, and the time it happened.</p>
+			</div>
+		</div>
+		<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
+	</body>
+</html>
diff --git a/errors/styles/styles.css b/errors/styles/styles.css
new file mode 100644
index 0000000..8cda8eb
--- /dev/null
+++ b/errors/styles/styles.css
@@ -0,0 +1,11 @@
+/*
+ * styles.css
+ * Copyright (C) 2020 Vintage Salt
+ *
+ * Distributed under terms of the MIT license.
+ */
+
+/* GLOBALS */
+.content h1 {
+}
+