自定义404错误页面正确返回“404”状态码

时间:2011-5-30     作者:smarteng     分类: 服务器相关


在自定义404错误页面设置完毕后,一定要检查一下其是不是能够正确地返回“404”状态码。可以使用Server Header检查工具,输入一个不存在网页的url,查看一下HTTP Header的返回情况,确信其返回的是“404 Not found”。 
检查链接:http://www.seobox.org/getheader.htm

404错误的处理方式

(一)定制404错误页面的基本原则
首先应明确的是,404错误应工作在服务器级而不是网页级。对定制使用动态页面如PHP脚本类型的404页时,必须确保在PHP执行前服务器已经顺利地送出“404”状态码,不然,一旦执行到了ISAPI级别,返回的状态码便只能是“200”或其他如“302”之类的重定向状态码了。
其次,在自定义网站的404错误页面时,对设置的错误页面URL链接应使用相对路径而不是绝对路径,而且自定义404页面应该放在网站根目录下。尽管无效链接可能是多种形式的URL,但当发生404访问错误时,WEB服务器会自动将其转到自定义的404错误页中,这跟URL的形似没有关系。

(二)Apache下设置404错误页面
为Apache Server设置 404错误页面的方法很简单,只需在.htaccess 文件中加入如下内容即可: 
ErrorDocument 404 /notfound.php
当然,把”/notfound.php” 改为自定义404错误页面的地址和名称。
尤其需要注意的是,不要采取如下的方式:
    ErrorDocument 404 http://www.highdiy.com/notfound.php
这样设置则是错误的:其将返回“200”状态码而不是“404”。
另外,需要注意的是,如果您的.htaccess存在类似这样的内容:
    ErrorDocument 404 /index.php

注意: 
1.切记不要将404错误转向到网站主页,否则可能会导致主页在搜索引擎中消失 
2.切记不要使用绝对URL(例如:http://www.bloghuman.com/nofound.php形式),如果使用绝对URL返回的状态码是“302”+“200”(已测试)

(三)IIS/ASP.net下设置404错误页面
首先,修改应用程序根目录的设置,打开 “web.config” 文件编辑,在其中加入如下内容:
<configuration> 
<system.web> 
<customErrors mode=”On” defaultRedirect=”error.asp”> 
<error statusCode=”404″ redirect=”notfound.asp” /> 
</customErrors> 
</system.web> 
</configuration>

注:上文例中“error.asp”为系统默认的404页面,“notfound.asp”为自定义的404页面,使用时请修改相应文件名。
然后,在自定义的404页面“notfound.asp”中加入:
<% 
Response.Status = “404 Not Found” 
%>
这样,便可以保证IIS能够正确地返回“404”状态码
(四)在IIS/ASP.net下设置404静态页面

设置静态404错误页面的方法则比较简单,在IIS管理器中右键单击要管理的网站,打开“属性”中的“自定义错误信息”页,为“404”设定相应的错误信息页即可。不过,此处在“消息类型”中一定要选择“文件”或“默认值”,而不要选择“URL”,不然,将导致返回“200”状态码。