Building a blog with Octopress can be a bit of a hassle at times. Having converted from Wordpress, I miss the “Page not found” error that Wordpress provides when you get a request for an invalid URL. Thankfully, with Apache, htaccess and a touch of code, you can create your own 404 page.
First off, create a new page in your source folder. I call mine
errors/404-page-not-found.html. That creates a corresponding HTML document in
/errors/404-page-not-found.html. There aren’t any restrictions on the
filename, but you must keep the extension as a HTML. If you leave it as a
markdown file, then the Jekyll engine tends to strip out the HTML tags and
leaves you with just the inner code.
You’ll also need to change the sitemap_generator plugin to exclude the generated 404 page from the sitemap XML.
diff --git a/plugins/sitemap_generator.rb b/plugins/sitemap_generator.rb index a08590b..92cb0dd 100644 --- a/plugins/sitemap_generator.rb +++ b/plugins/sitemap_generator.rb @@ -46,7 +46,7 @@ module Jekyll SITEMAP_FILE_NAME = "sitemap.xml" # Any files to exclude from being included in the sitemap.xml - EXCLUDED_FILES = ["atom.xml"] + EXCLUDED_FILES = ["atom.xml", "404-page-not-found.html"] # Any files that include posts, so that when a new post is added, the last # modified date of these pages should take that into account
Finally, you need to tell Apache to serve up this page when it encounters a 404
error. Create a file
source/.htaccess with the following contents.
ErrorDocument 404 /errors/404-page-not-found.html
This should be all you need.
Thanks to kAworu for the steps to build this page.