.htaccess ERRORS

28.07.2009 0

This seems to be what people think htaccess was meant for, but it is only part of the general use. While this plays a huge role in what htaccess does. There is so much more we’ll be going over in the following posts.

In order to specify your own ErrorDocuments, you need to be slightly familiar with the server returned error codes. You do not need to specify error pages for all of these, in fact you shouldn’t. An ErrorDocument for code 200 would cause an infinite loop, whenever a page was found…this would not be good. The following is a list of error codes for your reference:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Successful Client Requests
200 	OK
201 	Created
202 	Accepted
203 	Non-Authorative Information
204 	No Content
205 	Reset Content
206 	Partial Content
 
Client Request Redirected
300 	Multiple Choices
301 	Moved Permanently
302 	Moved Temporarily
303 	See Other
304 	Not Modified
305 	Use Proxy
 
Client Request Errors
400 	Bad Request
401 	Authorization Required
402 	Payment Required (not used yet)
403 	Forbidden
404 	Not Found
405 	Method Not Allowed
406 	Not Acceptable (encoding)
407 	Proxy Authentication Required 	 
408 	Request Timed Out
409 	Conflicting Request
410 	Gone
411 	Content Length Required
412 	Precondition Failed
413 	Request Entity Too Long
414 	Request URI Too Long
415 	Unsupported Media Type
 
Server Errors
500 	Internal Server Error
501 	Not Implemented
502 	Bad Gateway 	 
503 	Service Unavailable 	 
504 	Gateway Timeout 	 
505 	HTTP Version Not Supported

You will probably want to create an error document for codes 404 and 500, at the least 404 since this would give you a chance to handle requests for pages not found. 500 would help you out with internal server errors in any scripts you have running. You may also want to consider ErrorDocuments for 401 - Authorization Required (as in when somebody tries to enter a protected area of your site without the proper credentials), 403 - Forbidden (as in when a file with permissions not allowing it to be accessed by the user is requested) and 400 - Bad Request, which is one of those generic kind of errors that people get to by doing some weird stuff with your URL or scripts.

In order to specify your own customized error documents, you need to add the following command, on one line, within your htaccess file:

1
2
3
ErrorDocument code /directory/filename.ext
    or
ErrorDocument 404 /errors/notfound.html

This would cause any error code resulting in 404 to be forward to yoursite.com/errors/notfound.html

Likewise with:

1
ErrorDocument 500 /errors/internalerror.html

You can name the pages anything you want, and you can place the error pages anywhere you want within your site, so long as they are web-accessible (through a URL). The initial slash in the directory location represents the root directory of your site, that being where your default page for your first-level domain is located. I typically prefer to keep them in a separate directory for maintenance purposes and in order to better control spiders indexing them through a ROBOTS.TXT file, but it is entirely up to you.

If you were to use an error document handler for each of the error codes I mentioned, the htaccess file would look like the following (note each command is on its own line):

1
2
3
4
5
ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/authreqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/serverr.html

You can specify a full URL rather than a virtual URL in the ErrorDocument string (http://yoursite.com/errors/notfound.html vs. /errors/notfound.html). But this is not the preferred method by the server’s happiness standards.

You can also specify HTML, believe it or not!

1
ErrorDocument 401 "<body bgcolor=#ffffff><h1>You have to actually <b>BE</b> a <a href="#">member</A> to view  this page, Colonel!

While this is possible, it’s not recommended since you can have so much more control over the error pages when used in conjunction with xSSI, CGI or both. Also note that the ErrorDocument starts with a ” just before the HTML starts, but does not end with one…it shouldn’t end with one and if you do use that option, keep it that way. And again, that should all be on one line, no naughty word wrapping!

Next, we are moving on to password protection, that last frontier before we delve into into the true capabilities of htaccess. If you are familiar with setting up your own password protected directories via htaccess, you may feel like skipping ahead.

No comments

Leave a reply