Recipe 9.5 Redirecting Invalid URLs to Some Other Page
Problem
You want all "not found" pages to
go to some other page instead, such as the front page of the site, so
that there is no loss of continuity on bad URLs.
Solution
Use the ErrorDocument to catch
404 (Not Found) errors:
ErrorDocument 404 /index.html
DirectoryIndex index.html /path/to/notfound.html
Discussion
The recipe given here will cause all 404 errors—every time
someone requests an invalid URL—to return the URL
/index.html, providing the user with the front
page of your web site, so that even invalid URLs still get valid
content. Presumably, users accessing an invalid URL on your web site
will get a page that helps them find the information that they were
looking for.
On the other hand, this behavior may confuse the user who believes
she knows exactly where the URL should take her. Make sure that the
page that you provide as the global error document does in fact help
people find things on your site, and does not merely confuse or
disorient them. You may, as shown in the example, return them to the
front page of the site. From there they should be able to find what
they were looking for.
When users get good content from bad URLs, they will never fix their
bookmarks and will continue to use a bogus URL long after it has
become invalid. You will continue to get 404 errors in your log file
for these URLs, and the user will never be aware that they are using
an invalid URL. If, on the other hand, you actually return an error
document, they will immediately be aware that the URL they are using
is invalid and will update their bookmarks to the new URL when they
find it.
Note that, even though a valid document is being returned, a status
code of 404 is still returned to the client. This means that if you
are using some variety of tool to validate the links on your web
site, you will still get good results, if the tool is checking the
status code, rather than looking for error messages in the content.
See Also
|