正 文:
有不少朋友的网站,对于删除页面或不存在的页面都是简单处理,甚至有很多人根本不考虑自己网站的404页面是啥;这是一个不好的习惯,很有可能对搜索引擎造成很大的干扰,对搜索引擎不友好,SE也没必要对你的网站友好了。
而对很多站长来说,网站没有搜索引擎带来流量,哪怕再好的酒也怕巷子太深啊。国内很多中小型网站基本采用的是虚拟主机,而这些虚拟主机绝大数是支持asp的主机,这些虚拟主机默认的404页面是一个win系统自带的404错误页面,没有任何处理,对用户是十分不友好。
很多用户遇上这样的404页面是会毫不犹豫地关闭网页,也许从此就不再访问这个页面了。那么,您也就失去了一个用户。
那么,有的站长也会在虚拟主机管理面板里设置自己的404页面,如最常用的 404.htm 静态页,这些404页面看上去很美,也对用户十分友好了。但这里非常重要的一点是,您注意到这样的页面其真正返回的网页状态码是http 200 吗?!
返回http200状态码就表示当前页面是正常的,可以被搜索引擎索引收录;如果你的网站有大量被删除的网页,或改版了,这造成的后果就是产生了大量重复的或空白的网页,这些会严重影响网站在SE当中的排名表现。
那我们应该如何解决这个问题呢?下面飘易:flymorn仅以 asp 网站程序举例来说明,其他语言 php、asp.net都是差不多的思路。
对于网站整体的404页面,我们应该在虚拟主机管理面板里把404错误地址设置为:/err404.asp ,这样的动态页面,对于asp网站来说,只有asp页面才能设置404返回状态码,静态页面html是无法通过程序设置的。在 err404.asp 页面里写下这样的代码:
<%
Response.Status="404 Not Found" '404,跳转
Response.write "<H2>飘易提示:当前页面已经删除或转移啦!2秒钟后将跳转到首页!谢谢~~</H2>"
'Response.write "<meta http-equiv=""refresh"" content=""3;url=http://www.piaoyi.org/index.asp"">"
Response.write "<script>setTimeout(""window.location='http://www.piaoyi.org/index.asp'"",3000);</script>" 'js跳转,延时3s
Response.End
%>
注意:由于绝大多数用户的客户端浏览器并没有把ie“工具”中的“高级”的“显示友好的http错误信息”前的勾去掉,所以根据
微软的技术文档,我们自定义的错误页面的字节数必须要大于或等于
512字节,才能填充包含足够的字符的服务器发送的响应来覆盖默认的友好错误信息。
这样的代码你可以加工提示文字,可以改成你想要的效果,并且把页面字节数加大到 512字节以上。这样做的好处:一、对于搜索引擎返回http404错误,告诉SE我的这页面已经不存在了,请从索引里删除;二、对用户友好,提示错误信息,展示网站其他内容,挽留用户。
对于程序里 如 show.asp?id=1234 的页面,如果你从数据库里删除了 id 为1234的这条信息,那么在页面开始判断的时候,需要加上如下的代码:
<%
if rs.eof and rs.bof then '已删除的信息
call closedb() '关闭数据库连接
Response.Status="404 Not Found" '404,跳转
Response.write "<H2>提示:当前页面已经删除或转移啦!2秒钟后将跳转到首页!谢谢~~</H2>"
'Response.write "<meta http-equiv=""refresh"" content=""3;url=http://www.piaoyi.org"">"
Response.write "<script>setTimeout(""window.location='http://www.piaoyi.org'"",3000);</script>" 'js跳转,延时3s
Response.End
end if
%>
这样设置后,可以达到同样的效果。大家可以使用专门的检测页面返回状态码的工具检查当前页面的返回状态:
HTTP状态码检查工具、
HTTP Status Codes Checker。关于301、302状态码的设置,可以参考文章
301重定向实现方法,及对网站优化的作用。如果大家有疑问,欢迎在飘易博客发布留言。