正确设置自定义404错误页面

October 30th, 2011

自定义404页面返回不当状态码如“200”等给网站最终SEO效果带来的不利影响,因此,确保自定义的404错误页面能够返回“404”状态码是极为重要的,也是网站优化与SEO的基本要求。

这一点如何保证呢?如何才能为网站设置能够正常工作的404错误页面?下面针对不同情况详细介绍。
定制404错误页面的基本原则

首先应明确的是,404错误应工作在服务器级而不是网页级。对定制使用动态页面如PHP脚本类型的404页时,必须确保在PHP执行前服务器已经顺利地送出 “404”状态码,不然,一旦执行到了ISAPI级别,返回的状态码便只能是“200”或其他如“302”之类的重定向状态码了。

其次,无效链接有可能指向网站内的任何位置,因此,在定制网站的404错误页面时,对其中的链接应使用绝对路径而不是相对路径。这点相信很容易理解,考虑一下“http://www.highdiy.com/a/a.html”与“http://www.highdiy.com/a.html” 这样两个位于不同目录深度的无效链接,当404错误页中链接使用相对路径时便会彻底乱套。
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

切记要将其删除:这种将404错误转向到网站主页的作法存在极大的风险,严重时会导致主页在搜索引擎中消失。
IIS/ASP.net下设置404错误页面

IIS/ASP.net一直是404页面不能正确返回“404”状态码的重灾区,尤其对动态网页而言,很多网站在使用IIS管理器设置404自定义错误页面后发现其返回码却是“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”状态码。

当然,在设置完成后,最好用Server Header检查工具检查一下设定是否正确。

This entry was posted on Sunday, October 30th, 2011 at 12:22 pm and is filed under 答疑解惑. You can follow any responses to this entry through the RSS 2.0 feed. Responses are currently closed, but you can trackback from your own site.

Comments are closed.