Creating Custom Error Pages with .htaccess



Have you ever noticed that some people have really nice error pages when a page doesn't exist on their site? Wouldn't it be nice if you could make your error page match the rest of your site? Don't fret; you can do it! All you'll need to do is use a handly little file called .htaccess.

First thing you need to know is that .htaccess is a very powerful file that controls a lot of important parts of your site. Before you change anything, make sure to make a backup copy. If anything goes wrong, you can revert to the backup. If there isn't already an .htaccess file on your server, you can create one in Windows Notepad or your favorite HTML editor. If you're using Windows, make sure you save the file as ".htaccess" including the quote marks.

Next, you need to little bit about HTTP response codes. What are those, you ask? Well, any time you access a page from your browser, the server that contains the page (or that you think contains the page) looks for the page and sends a numeric code back to your browser. If everything goes alright, the server sends the code 200 back to you and the page is displayed. If the page isn't found, the server sends a 404 code back. That's why page-not-found errors are commonly called 404 errors. There are lots of different HTTP codes, but you'll only need to make pages for a few of them:

  • 400: Bad request.

    The server can't understand the request you're sending. This is rarely seen (hopefully).

  • 401: Authorization required.

    In order to access this page, you'll need a username and password.

  • 403: Forbidden.

    The server was instructed to refuse your request.

  • 404: Page not found.

    Our friend the 404 error. You'll use this page the most often.

  • 408: Timeout.

    The request could not be completed in the time allowed for it. Your browser will usually automatically generate a message when this occurrs.

  • 500: Internal server error.

    Something is misconfigured in the server. This is generally caused by problems with scripts or your .htaccess file.

Okay, now that you understand a little bit about what .htaccess can do, we're ready to start doing the grunt work. The first thing we're going to need to do is make our error page. You can either make a different page for each error or just have one standard error page. The choice is yours, but we're going to make a 404 error page in this tutorial. Go ahead and put some HTML on your page, and feel free to spice it up a little bit. In fact, do spice it up. Use the stylesheet that matches your site. Include a link to your home page. Post your email address so people can contact you if there's a problem. (If you're worried about spam bots, there are ways to obfuscate your email address.) Once your done, save your page as an HTML file. We're going to call ours error404.html and save it in the /errors directory.

Once you're done with that, it's time to do the magic. Open up the .htaccess file that you found/created earlier. If yours is premade, find some blank space at the bottom. Now, insert the following line of code:

ErrorDocument 404 /errors/error404.html

That's it! If you want to add more error documents, just add more ErrorDocument lines. The general format for the line is

ErrorDocument HTTP_error_number /path/to/errorpage.ext

If you want to be really fancy, you can use appropriately named CGI, PHP, ASP or other pages as your error page. Now, go type some random URLs to check your brand-spanking new error pages!

Want to learn more about .htaccess? Visit http://httpd.apache.org/docs/1.3/howto/htaccess.html