Forum Moderators: Robert Charlton & goodroi
When I use a server header checker tool to validate here is what I get testing a missing page:
#1 Server Response: http://www.example.com/abc
HTTP Status Code: HTTP/1.1 200 OK
Content-Length: 237
Content-Type: text/html
Content-Location: http://www.example.com/404.html?404;http://www.example.com:80/abc
Last-Modified: Fri, 13 Oct 2006 22:40:17 GMT
Accept-Ranges: bytes
ETag: "8df5a58e18efc61:560"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Sat, 14 Oct 2006 00:18:37 GMT
Connection: close
It's the '200 OK' that scares me. Is this a true 404?
[edited by: tedster at 1:51 am (utc) on Oct. 14, 2006]
[edit reason] use example.com [/edit]
1. They have to hand code the error line into the httpd.conf OR .htaccess.
(Doesn't happen with most.)
2. You have to set the .htaccess file up yourself.
If you have access:
ErrorDocument 404 /your-file.html
3. You have to find a work-around:
Servers do not send full headers to dynamic pages, so you should be able to set your custom error page to error.php, then use the php header() function to send a 'Page Not Found' 404 header, and finish loading your page.
(Always remember to 'NoIndex,NoFollow' any custom error page.)
Justin
In Apache, make sure that the URL for the ErrorDocument is just a folder and file URL, like: /errors/error.404.html
The OP is using Windows/IIS and that often sends the wrong codes out. It is harder to set up than Apache.
Make sure you have meta robots noindex set up on all Custom Error Pages, but having nofollow too, is a bad idea in my opinion.
It is way beyond the scope of the Google forum to get into all that complication; best to take it to our IIS and ASP.NET Forum [webmasterworld.com]. But the message is clear, you should know exactly what you're aiming for --> a URL that does not exist should be returning a 404 [Not Found] or 410 [Gone] http header status.
If you use custom error handling on a Windows server, do not rest until you get this right.