你的404页面404了吗?

如果你为自己的网站自定义了一个404页面,你是否遇到并注意到这样一种情况:这个404页面仍会返回200状态码?也就是说,当用户访问你的网站中不存在的页面时,服务器在传送自定义的404页面的同时,会如同访问其它页面一样,返回200 OK状态码,即“soft 404”。
请尽量避免出现这种情况,而使用真正的硬404。

这种情况会带来什么不良后果?

如果你在Google搜索“自定义404”(在国内访问可能被转至谷歌),会找到很多写得很好的文章,因此我就不在此赘述了,仅略微说明一下。

简单地说,当访问者是人类时,不会有任何影响。因为当用户通过浏览器访问你的网页时,最终展现在用户眼前的只有经浏览器解析后的HTTP消息体,而不包含消息头。

当访问者是蜘蛛时,问题就出现了。当蜘蛛访问“不存在的页面”时,服务器返回了带200状态码的页面(实为404错误页),蜘蛛看到200状态码后,会错误地认为这个“不存在的页面”存在,并且把404错误页的内容当作此页面编入索引。由于每个找不到文件的请求都会返回这个带200状态码的404错误页,所以搜索引擎可能会多次将各种各样的错误的URL以完全相同的内容编入索引。这将会影响网站的SEO效果。

如果你有兴趣了解更多,我推荐你阅读谷歌中文网站管理员博客: 网站管理员中心404代码专题周里的3篇图文并茂的文章。

如何确定我的404页面返回什么状态码?

例如您的404页面地址为http://hellomouse.com/not_found.aspx

方法A:自己检查

打开cmd,输入telnet回车,输入open hellomouse.com 80回车,复制以下内容并粘贴至telnet窗口内:(在telnet内粘贴的方法为:点右键,选择“粘贴”。此时不可使用Ctrl+V)

GET /not_found.aspx HTTP/1.1
Host: hellomouse.com

多次回车。(若有独立IP则可不必输入host一行)

方法B:用第三方工具检查

用Google搜索“HTTP Status Codes Checker”,使用这种网页版的检查工具进行检查。我就不在此链接具体的网页了。

如何让我的404页面返回404状态码?

建议您使用ASP或PHP网页作为404页面,因为这样可以很容易做到返回404状态码。
独立主机用户可自行修改服务器软件设置。

方法A:直接修改自定义的404页面

HTML页面就别想了。

ASP

插入以下代码:

<% Response.Status = "404 Not Found" %>

或者:

<% Response.StatusCode = 404 %>

PHP

插入以下代码:

<?php header('HTTP/1.1 404 Not Found'); ?>

方法B:修改web.config或.htaccess文件

由于我推荐使用方法A,并且自己也没有使用过,所以此方法请自行搜索。

至此,你可以再次确认一下你的404页面是否返回了404状态码。

0 条评论

留下评论