Whilst looking at the website statistics for my main website, I realised that many users were attempting to access pages that no longer exist on the server. Some may argue that old content should be left in place, but others will disagree and my preferred approach is to redirect requests to the new locations, or at least to provide a polite message that the document has been removed and a link to the home page! Fortunately on an Apache server, this may easily be achieved using an .htaccess directive.
Various types of redirect are available through .htaccess, using the syntax:
Redirect [status] URL-path URL
The status argument can be used to return a number of HTTP status codes:
permanentreturns a permanent redirect status (301) indicating that the resource has moved permanently.
tempreturns a temporary redirect status (302). This is the default and is assumed if no status argument is given, indicating to the client that the resource has moved temporarily.
seeotherreturns a “See Other” status (303) indicating that the resource has been replaced.
gonereturns a “Gone” status (410) indicating that the resource has been permanently removed. When this status is used the URL argument should be omitted.
Other status codes can be returned by giving the numeric status code as the value of status. If the status is between 300 and 399, the URL argument must be present, otherwise it must be omitted.
For example, a temporary redirection from old file or directory to new:
Redirect /olddirectory/oldfile.html http://yoursite.com/newdirectory/newfile.html
Redirect /olddirectory http://yoursite.com/newdirectory/
or a permanent redirect:
Redirect permanent /olddirectory http://www.yoursite.com/
or redirect with error 410:
Redirect gone /oldfile.html
Full details for Apache users may be found in the Apache HTTP Server documentation.
Microsoft Internet Information Server (IIS) users can find information on redirecting requests to files directories or programs in the IIS 6.0 Operations Guide.
RFC 2616 details all HTTP status (including error) codes.