网站规范化——网站对于301、404错误的处理

由于网站来来回回地换了几次空间,而且访问方式也发生的变化,原来是使用链接 http://www.dudo.org/blog 访问,处于二级目录的地位,调整后使用 http://www.dudo.org 就可以直接访问了。后来又增加了一个备用域名 duxinhua.cn 。所以最后导致搜索引擎指向网站的链接出现了问题,有的页面不能访问了。如果搜索引擎多次访问网站都得到错误的话就会影响网站的收录程度。虽然是个人博客,不追求访问量,但是每天高一点的点击量总比无人问津好一点,而且养成一个好的、正确的使用习惯也不是一件坏事情。这是说说我访问错误的处理,更明确地说是301错误和404错误。
1、301错误
301错误主要是域名更换后,搜索引擎还在使用原有域名访问你的网站,如果得到的是一个301错误,那么搜索引擎就知道你已经更换了域名,下次就会使用新域名来索引你的网站,当然你要告诉搜索引擎你的新域名是什么。代码如下:

 <%
Response.Status="301 Moved Permanently"     '错误状态:301
Response.AddHeader "Location","http://www.dudo.org"
%>

当然这是写在一个特定文件里面的,如果你想所有访问旧域名的请求都转到新域名,你就需要在你的虚拟空间的控制面板里设置这个301错误的内容了。
对于PHP来说,就想对简单了:
如果我想让所有来访问 duxinhua.cn 的数据会自动跳转到 dudo.org
如 duxinhua.cn/default.php 会转到 dudo.org/default.php
转换空间后自动跳转到新页面的代码

将下面的代码保存为 .htaccess

RewriteEngine on
rewriteCond %{http_host} ^duxinhua.cn
rewriteRule ^(.*)$ http://www.duxinhua.cn/$1 [R=301,L]
rewriteCond %{http_host} ^www.duxinhua.cn
rewriteRule ^(.*)$ http://www.duxinhua.cn/$1 [R=301,L]

2、404错误
如果有人访问了我的网站上一个不存在的页面那么就会返回给浏览器一个404错误,如果我们这部分的流量也不想失去的话,你就可以自己做一个404错误页面,在几秒钟后让浏览器怎地跳转到网站指定页面就可以了。比如你访问 http://www.dudo.org/default.asp ixixi.asp这个文件是不存在的,那么你就会看到一个404错误的页面,3秒后你就自动回到网站的首页了。
404错误的设置也是虚拟空间的控制面板中的”错误定制“功能了,相信绝大部分的空间都是支持的。而PHP的也只是在..htaccess修改就可以了

ErrorDocument 404 /Lame_excuses/not_found.html

一个好的网站总是要遵循一定规则的,并且要让用户得到最好的体验。即时是在访问你的网站出现错误的时候也不要让你的用户、哪怕是搜索引擎面临一个冷冰冰的页面。当然我们要做的还不只这些,只是暂时我自己做了这些而已,愿意和大家继续讨论。

6 Responses to “网站规范化——网站对于301、404错误的处理

  • 好东西。。。

    [回复]

  • 不错,收藏了!!

    [回复]

  • dudo你好,还是不知道怎么做才对,请教,望答复! 我会常过来看看·
    1. 想把xxx.com/aaaa.asp /html 重定向为www.xxx.com/aaaa.asp /html
    2.空间不支持301自定义

    测试了集中方法都不行。。。
    我该怎么设置、修改呢?[reply=dudo,2009-04-25 09:30 PM]这个肯定不是空间支持的问题了,只要支持Asp肯定没有问题的
    像你的这和情况,首先要判断来路链接的完整路径,看看路径中是否包含www.,如果没有则重新定向[/reply]

    [回复]

  • 能把具体代码给写一下吗?我也用的pj.
    谢谢啦[reply=dudo,2009-04-25 09:30 PM]在header.asp中添加如下代码:
    '判断来路链接
    Dim referURL
    '如果链接中含有参数
    If Request.ServerVariables("QUERY_STRING") <> "" Then
    '获得正在访问的页面和传送的参数
    referURL = Request.ServerVariables("SCRIPT_NAME") & "?" & Request.ServerVariables("QUERY_STRING")
    Else
    '如果没有参数则只获得正在访问的页面名称
    referURL = Request.ServerVariables("SCRIPT_NAME")
    End If
    '根据主机名称判断
    '如果主机名为dudo.org(没有www),则发送301代码
    If LCase(Request.ServerVariables("SERVER_NAME") = "dudo.org") Then
    Response.Status="301 Moved Permanently"
    Response.AddHeader "Location","http://www.dudo.org&#34; & referURL
    Response.End
    End If

    [/reply]

    [回复]

  • 谢谢dudo, 实现了!tks!

    [回复]

Trackbacks & Pings

  • PJBlog转WordPress全程实录 | dudo博客 :

    […] 301永久转移。这是要告诉搜索引擎的。因为PJBlog已经被Google索引了,当Google再次顺着原来的链接进入你的网站的时候,他会得到一个301状态码,这是告诉他以后使用新的链接进入网站,并删除旧链接。请参考dudo.org以前的一篇文章《网站规范化——网站对于301、404错误的处理》。例如,原来已经被搜索引擎收藏的网址 dudo.org/articles/itforum/43.htm在转换到WordPress后对应的是dudo.org/?id=43 那么我们在.htaccess中要这么写:RewriteRule ^article/.+/(d+).htm$ http://dudo.org/?p=$1 [R=301,L],意即根据文件名中的数字跳转到对应的页面去,[R=301,L]意思是返回301状态码并停止执行后面的内容。更多.htaccess中路径重写的内容请参考“Apache模块 mod_rewrite”。 […]

    10年 ago

发表评论

电子邮件地址不会被公开。 必填项已用*标注