Missing Files
Problem
The general idea here is that you want to redirect visitors if a particular file is missing; however it is considered better to simply state the requested URI is missing and issue a 404 Not Found. Some site developers may choose not to do this and this method will provide an alternative and a variety of choices.
Issue a non-404
In this example, example.com should, of course, be replaced with your own website address. We want to issue a clean web page to outsiders and those with an empty referer but sill allow internal people to get the standard 404 Not Found error message.
RewriteEngine on RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteCond %{HTTP_REFERER} !example\.com [NC] RewriteRule ^ /UnderConstruction.html [L]
Replace the Missing File with Another File
If you want the missing file to be replaced with a URL from another site, you can do so by providing a full URL (http//:some.other.server/) in that RewriteRule:
RewriteEngine on RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteRule ^ http://other.example.com/ [R=302,L]
This is the same as
# this issues a 302 redirect, not a 404 not found status code ErrorDocument 404 http://other.example.com/
does.
Discussion
Issuing a non-404 (file found but not the one requested) is a way to cleanly fail if site content if missing. However this can confuse and polute the web crawlers indexing your site.
Issuing a Redirect-If-Missing is another approach however this too can lead to later confusion about which resource is valid if not up-to-date.
Bottom-line: Choose a particular error eporting and handling policy and stick with it.