301转向的作用和设置方法

301转向是SEO人员经常使用的必备技术,对301转向的原理、作用、实现方法等需要清楚了解。

什么是301转向?

301转向(或叫301重定向、301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址,也就是永久性转向。

其它最常见的状态码还包括:

200:表示一切正常

404:网页找不到

302:暂时转向/重定向/跳转

5XX:通常是服务器错误

等等。

为什么要做网址转向?

由于各种各样的原因,网站经常需要做网址转向。

比如,为保护版权,你拥有不同TLD的多个域名:

company.com
company.net
company.org
company.com.cn
company.cn
等等。

很自然这些域名全部指向一个网站。如用company.com为主域名,其它域名就可以转向到company.com。

或者你注册了公司全称域名longcompanyname.com,但太长 ,你也注册了缩写域名方便用户记住lcn.com,其中一个做主域名,另一个就可以转向到主域名。

再比如,网站经常由于各种原因删除页面,下架产品啦,敏感新闻啦,页面删除后直接返回404是一种方式。但如果被删除页面有不错的外链呢?可以做301转向将被删除页面URL转向到其它最相关的页面,或上一级目录页面,这样外链权重会被顺利接收下来。

再比如,公司更换域名,老域名需要全站做转向到新域名,这样用户无论从哪个渠道访问了老域名,都会被自动转向到新域名。虽然通常不建议更换域名,域名权重、流量的转移是有风险的,但有时候更换域名是公司级别的优先战略,不得不做,如京东域名从360buy换到jd.com。

还有网站重新设置栏目、更换CMS、独立移动站等,都可能牵扯到URL的变化,需要从一个URL做转向到另一个URL。

为什么要用301转向?

网址转向方法主要包括:301转向,302转向,JavaScript转向,PHP/ASP/CGI转向,META REFRESH网页META刷新,等。302转向可能会有URL规范化问题。其它方法都是常用的作弊手法,当然不是说不可以正当地用,方法本身没有错,但被作弊者用多了,搜索引擎对这些可疑的转向都很敏感。何必冒险呢。

当网页A用301重定向转到网页B时,搜索引擎可以肯定网页A永久的改变位置,或者说实际上不存在了,搜索引擎就会把网页B当作唯一有效目标。好处是,第一,没有网址规范化问题,第二,也很重要的,网页A的链接权重会传到网页B。

很多时候其它网站会链接到

http://domainname.com
http://www.domainname.com/index.html
http://domainname.com/index.html

而不是你希望的

http://www.domainname.com

这样链接的PR也会传递到所有URL,如果你用301转向把前三个URL转到
http://www.domainname.com
链接权重也就集中在网页http://www.domainname.com了。

网址规范化贴子所说,301转向是集中权重、解决网址规范化问题的重要方法之一。

怎样做301转向

如果你用的是Unix/Linux主机,可以用htaccess文件(Unix/Linux中用于目录特定指令如密码,转向,错误处理等的文件)。

比如把/old.htm转到http://www.domain.com/new.htm,可以用这个指令:

redirect 301 /old.htm http://www.domain.com/new.htm

redirect permanent /old.htm http://www.domain.com/new.htm

如果要把所有http://domain.com形式的URL用301重定向转到 http://www.domain.com,包括:

http://domain.com/about.htm
转到 http://www.domain.com/about.htm

http://domain.com/dir/index.htm
转到 http://www.domain.com/dir/index.htm

等等,还要用到mod_rewrite:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

如果你用的是 Windows主机,应该在控制面板做301转向设定。

据我所知,HTML无法做301转向。在HTML里只能做JS或META REFRESH,但不是301转向。HTML一被读取,就已经返回200 OK状态码了。

如果你的页面是ASP或PHP还可以做301转向:

ASP:

<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently” Response.AddHeader “Location”, ” http://www.domain.com”
>

PHP:

Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.domain.com” );
?>

怎样检测301转向做得是否正确?

检查301转向是否做得正确,不能单靠自己访问源页面。即使用户访问源页面时确实是被自动转向到目标页面,也不能确认转向就是301,也可能是其它转向机制。

由于状态码是在服务器头信息中,页面本身是看不到的,页面源代码也是看不到的,必须检查头信息。

第一个简单方法是用Chrome浏览器的Developer Tools。打开Developer Tools后,访问源页面URL,在Developer Tools信息中可以看到每个文件的状态码:

从上图可以看到,访问不带www的URL:https://seozac.com,状态码是301,然后被转向至正确的带www的URL,状态码是200。顺便说一句,Chrome的Developer Tools是个非常非常好的SEO工具。

也可以用线上工具,如我常用的:http://tools.seobook.com/server-header-checker/,中文的:https://tool.chinaz.com/pagestatus/

当然,最可靠的是检查服务器原始日志文件,里面有所有对不规范化URL访问的转向处理记录。

------首次发布日期: 2006年04月12日

作者: Zac
版权属于: SEO每天一贴
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。



139 条评论 “301转向的作用和设置方法

  1. 谢谢,我网站出现了大量的Supplemental Result 如果我site:www.mysite.com 收录很少320个,如果site:mysite.com收录1300个,但好多页是Supplemental Result 收录的页面的url是 mysite.com/***.htm前面没有www.你说我怎么在DOThtaccess文件做那么多面页的301转向呢?

  2. 一般我网站都是呀是这样写的 href=”../resource/resource.htm呀或href=”resource/resource.htm>,没有道理没有url规范化,真的要这样写吗?href=”http://www.mysite.com/resource/resource.htm,?不明白?

  3. 照你描述的情况应该是有URL规范化问题。只要在DOThtaccess文件放下面的mod_rewrite指令就行了,不用一个一个处理,对整个域名有效。

    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^domain.com [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

    你说的URL用绝对路径或相对路径在大部分情况下都没问题,但相对路径../resource/resource.htm有可能导致URL规范化问题。如果有反向链接连到http://domain.com,而你用的是相对路径而且没有301转向,那所有网页就都有两个URL版本了。

  4. DOThtaccess和.Thtaccess有什么不同,我的服务器是linux的,我建了两个,但.Thtaccess看不到。还有我的301转向什么时候才能看到有效呀,也就是说所有的页面已经做好了301转向??有什么方法,是不是也要site:mysite.com

  5. 如果把所有的../resource/resource.htm链接变成http://www.mysite.com/resource/resource.htm会不会影响收录??

  6. .Thtaccess文件?没听说过。可能是哪里拼写错了吧。应该是DOThtaccess,把DOT换成点“.”。WordPress好像有bug,直接写真的DOThtaccess总出错。

    301做好你自己就可以检查啦,比如去
    http://domainname.com
    看是否会自动转到http://www.domainname.com

    至于什么时候会消除URL规范化问题,我的经验是起码半年以上。

    相对路径改成绝对路径不会影响收录。

    RewriteCond %{HTTP_HOST} ^domain.com [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

    这两行指令是把没有www的URL统一成有www的URL。要http://www.domain.com/index.htm转到http://www.domain.com/要加一行:
    redirect 301 /index.htm http://www.domain.com/

    当然改完检查一下。

  7. 常看你的博文,有个问题请教:
    http://www.a.com 用301定向到www.b.com
    a的pr是5 ,会传递到b吗,这个过程需要多长时间,几天?几月?是否有具体的例子?
    对这个问题一直很费解?

  8. 用301转向网页a的pr会传递到b。

    一般需要几个月时间。现在工具条PR值也几个月才更新一次,所以跟几天也没什么差别。

  9. 感谢前面问题的解答,310方面还有些困惑:
    a用301转到了b,PR的转移需要一个时间的过程,可是排名情况会如何呢,是否也会象PR一样会完全地传递过来?我之前a的排名是非常好的且很稳定,但在专到b这段时间,多个核心词从首页降到了4页,我不知道是否是受换域名引起的?方便的话邮件里聊一下。

  10. 做301转向后PR和排名一年内不稳定都是正常的。而且301只是传递PR与排名没有直接关系。b页的排名和b站内容,结构,优化情况等都有关,和a页的排名没必然关系。

  11. 可以使用,但要后台批准才会出现。

    你发的trackback我批准后全是乱码,我删掉了。建议你把你的blog改成utf-8。

    搜索引擎bot不接受cookie,建议你拿掉session ID。

  12. 尊敬的zac老师,
    你好。
    我的网站是个jsp的网站,现有三个绑定的域名,按时间顺序分别是www.learndiary.com(pr=4),www.123go.org.cn(pr=4),当前由于网站定位调整,准备主要启用域名java.learndiary.com(pr=0)(pr值用www.123cha.com上查的)。
    根据你写的文章和jsp的重定向技术,我在程序中实现了网站下面各页面内容的301转向,请求原来域名下的内容返回301码,请求新域名下的内容返回200码。
    但是,我的首页通过程序无法实现301重定向。访问http://www.learndiary.com和http://www.123go.org.cn返回301,重定向到http://java.learndiary.com ,访问http://java.learndiary.com返回302,重定向到http://java.learndiary.com/indexAction.do ,
    访问http://java.learndiary.com/indexAction.do返回200码。
    因为我的网站是租的虚拟主机,主机只能够自动把http://java.learndiary.com定向到index.jsp, index.html, index.htm三种主页上,而我的网站的主页是index.do (使用struts做的),于是我在index.jsp做了一些重定向代码。但是始终不能达到输入我现在主用的域名http://java.learndiary.com就返回200码的效果。
    请问我这样情况的主页对搜索引擎友好吗?如果不友好我应该作些什么变动?

    谢谢。

    littlebat

    http://java.learndiary.com JAVA学习日记,分享目标,分享快乐。

  13. littlebat: 抱歉,具体怎么实现301在各种服务器上方法不一样。我对JSP等一无所知,也帮不上忙了。

  14. 谢谢您的回答,我主要是看了您的文章
    回答几个SEO相关问题:http://www.chinamyhosting.com/seoblog/2006/08/13/some-seo-questions/中的这段:“如果这些域名都返回的是200,那么恐怕就有复制内容问题。应该把其中一个域名做主域名,服务器返回200,其他的所有域名都要做301转向,检查服务器状态码时,应该返回301,这样才能避免复制内容网页。”

    我的重点是想问:我输入首域名http://java.learndiary.com的返回状态码是302,不返回200码;输入其它两个辅助域名的返回状态码是301。
    请问这样的情况对搜索引擎友好吗?对网站的搜索排名等有多大的负面影响呢?

  15. zac老师,
    您好。我在jsp文件里用meta的重定向标记使输入主域名正确的返回了200码,输入辅助域名返回301码并重定向到主域名。
    但是,我听说使用meta的跳转会被怀疑作弊,甚至会被搜索引擎封掉,就没敢用。是真的吗?

  16. 不知道你怎么用meta跳转实现301,如果真的是返回301,bot在看到meta跳转之前就转向了。不是很明白。

    不管用什么机制,只要你检测URL返回的确实是301就可以了。

    meta的跳转和302一般不推荐。

  17. [quote]
    我在jsp文件里用meta的重定向标记使输入主域名正确的返回了200码,输入辅助域名返回301码并重定向到主域名。
    [/quote]

    zac: 我的话可能没说准确,对输入主域名,用meta重定向可以返回200码;用jsp技术对输入主域名只能返回302码;
    用jsp中的301重定向技术把辅助域名可以重定向到主域名。
    实际上用url header checker查一下我的3个域名就知道啦:)
    分别是:www.learndiary.com(辅助域名)
    http://www.123go.org.cn(辅助域名)
    java.learndiary.com(主域名)

    我暂时准备做一个引导性的主页,用户输入域名后,进入这个主页,上面介绍一下本站的基本内容,如果用户决定进入的话,可以按一个“进入”链接进入“真正的”(也是现在用的)主页。我试了一下,这个引导性的主页可以用html文件做,返回的是200 OK。
    感谢你的回答。

  18. 请问:
    我有四个域名.都是做跳转.指到一个.
    但没有做到所说的301转向.现在有必要在其它页面中放入;

    这样写对吗?(我是新手.请Zac不要介意)

  19. zac老师,我的网站www.manaren.com的URL地址全部是动态的结构。我现在想将动态的地址转换为静态的.HTM的URL地址。优于百度已经收录了大量的页面。请问在地址静态化之后是否需要对于原有动态地址进行301重定向。

  20. zac老师 ,你好,我的网站http://www.hld122.com不知道为什么反向连接特别的少,我看了你里面不少关于反向连接的文章,照着做也不行,我们这个网站针对性还是很专的,在同类较好的网站中都有友情连接.可是反向连接就是不高,而且网站的世界排名一天比一天底,请您帮我看一下 ,是不是我的什么操作被误会成作弊了
    谢谢了

  21. zac老师,
    请问您个问题,我现在有三个域名做一个站,www.mix56.com这个米是以前注册的,后来网站改版了,又去注册了2个.www.qqrain.com和CN的,申请后就将www.mix56.com通过域名管理面版的URL转向到了qqrain.com,我是想在网站程序做好一些修改后再向BAIDU提交新域名的,但是百度还是一直再更新网站的数据,并且都是MIX56的网址,我在主机没有绑定MIX56这个米.所以我想请教您,怎么样让百度停止收录数据.并且mix56这个米继续指向同一个站..谢谢

  22. zac老师,您好!我们公司的站最近在改版,把原来http://www.cycmedu.com/kzpx/ggyys/ggyys.aspx这样的链接换成了http://www.cycmedu.com/ggyys/ggyys.aspx这样的。请问能做301转向么?该怎么做呢?

  23. zac老师您好!Windows主机做301转向是不是要在iis里新建一个网站然后把要做转向的网址做个”重定向到URL”转向到新地址? 谢谢解答!

  24. zac:我是用的国外空间,支持.htaccess的MOD_REWRITE,网站改版前用ASP+ACCESS,现在换成php+mysql其中一页面中的关键字在GOOGLE上排名不错,并带来不错流量。
    现在我想把此页面http://www.kingma-vehicle.com/more.asp?newsid=341301重定向到http://www.kingma-vehicle.com,我改怎么写.htaccess规则??

  25. zac,您好!
    我的网站即需要url重定向,又想把动态网页url转化为静态的,这样就会有两个重写规则和指令:
    (1)
    RewriteEngine On
    RewriteRule (.*)-(.*).htm $1.php?type=$2
    (2)
    RewriteEngine On
    Options +FollowSymLinks
    RewriteCond %{HTTP_HOST} ^mydmain.com [NC]
    RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]

    两个独立都能执行,但怎么让他们同时起作用呢?

  26. 我的站要换域名了,是HTML的,现在建一个,index.asp主页,把下面这段代码放进去.

    那我之前那个index.html是否要删掉呢?如果要删掉的话,我的新域名就不知链到哪了,怎么办呢?我的站是虚拟主机的,新的也是连到同一个空间

  27. 老师您好。
    这样的,中国绿软基地的前米caicai.org被GG K过了。
    现在改版,同时换新米lvdown.com.
    都是ASP生成静态html,想请教一下,应该用什么方式跳转?
    不胜感激!

  28. 我想将www.maixiangjiao.com转向到www.maixiangjiao.com.cn怎么办呀?
    我的站不知道为什么被百度K了,想换个域名,网站的结构已经做了修改了~~
    如果您有时间请回复一下好吗,邮件回复就最感谢了

  29. 问下:
    我的一个站空间绑了2域名,由于我们的副域名里面有关键词,所以在yahoo里面排得特好.现在2个域名都有2的PR,并且副域名的ALEXA 比主域名还高,到100W以下了!
    问下,这种情况下,我需要做301吗?
    小声问下,做了的话可能有什么后果或者结果啊?

  30. ok s:
    1)你留的代码和我写的好像并不一样。
    2)我写的只是举例,不保证适合所有服务器设置。
    3)具体网站代码怎么写,请咨询自己的程序员,以程序员的为准。

  31. zac老师:做了301转向会不会影响百度收录呢?会的话,我该怎么做呢?我的站在做了301转向后,百度收录从14000多变成了2600多,不知道是不是301转向的问题,还的zac老师指教!

  32. 请教:www.xxx.com/x/ 转向到book.xxx.com 里边的所有连接对应到如www.xxx.com/x/1.htm 对应到 book.xxx.com/1.htm ,不知道301转向 htaccees 这个文件的规则需要怎么写呢,方便的话能给个邮件吗

  33. To: Zac
    您好!老师
    想请教你 我自己的linux主机,但是开的是虚拟空间,这样的话怎么使用301
    把kaoshichong.com全部301到www.kaoshichong.com上 谢谢
    我搜索了关于301的文章 基本都是转载或修改你的 还是没找到我要的答案

  34. Zac 老师你好
    我看啦你写的301转向很好,我试着看啦我的网站发现有你说的问题 比说site:tisasports.cn 那么就出现两个首页 分别是www.tisasports.cn和tisasports.cn并且日期不同,我感觉应该做301 可是我的页面都是。html 不知道怎么做啊,劳驾你给知道下,万分感谢!!!qq 340264671 电话:01067257881

  35. 你好,请教下,我的网站www.0713hao.cn 不带www比带www收录页面多,那是不是要做301跳转呢 网站是php的 要跳转的话,利于搜索引擎搜索有没有什么需要注意的?用哪种方法跳转好呢?谢谢!

  36. 老大,您好。把dz从根目录下移动到bbs子目录下,在根目录下建cms,怎么写.htaccess?不影响原来的收录,cms没建在子目录下。
    原来的.htaccess内容如下:
    RewriteEngine On
    RewriteBase /

    RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
    RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
    RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
    RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
    RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

  37. 我的博客空间不支持.htaccess文件,按照这种方法
    PHP:
    header(“HTTP/1.1 301 Moved Permanently”);
    header(“Location:http://www.waimaole.com/”);
    exit();
    去添加到我的php文件里面,可是我的WordPress程序就出错了,麻烦老大告诉我下应该如何弄,谢谢!

    我的博客www.waimaole.com 网站名称:外贸乐

    主要是外贸技术支持,Zen Cart网店程序技术支持方面的博客!

  38. Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^domain.com [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
    上面复制后,输入domain.com 是会跳转到http://www.domain.com ,
    但是比如http://domain.com/xxx.html 全部链接都打不开,并不会跳转到http://www.domain.com/xxx.html ,提示说找不到网页,无法解析。。

    怎么解决,谢谢了!

  39. 买药网站www.myyao.com前不久是www.myyao.net的 由于公司发展变了一下域名后缀,结果收录量大量减少不说,PR也一下变为0了,这样的情况要持续多久,数据这些更新后PR还会回到www.myyao.net这个站吗?

  40. 我是《网络营销实战密码》的读者,我的网站用的是dedecms,网址:www.yig8.com请ZAC帮助看看网站在那些方面不足。另外,我的网站如何做301转向,我是新手,请ZAC务必要帮我。谢谢!

  41. 我的网站独立IP空间!有人把他的域名绑到我的网站上对我影响严重吗。如果这个站是被惩罚的站那我不是很惨吗!这个帮我ip的玉米是谁的

  42. 感谢老师讲解,有个问题请教,如果我整个网站更换程序,导致url全变,应该如何301呢,上万的页面,无法一个个处理啊。谢谢

  43. ZAC 你的新书SEO 实战密码中,提到301转向,可以提高PR值,我有点不明白。我这样说好了,我有一老网站PR值3(中文),现在我做了一个新网站(英文)。在做301转向的时候,是老网站通过301 转到新网站上面,还是新域名301转到老网站上面。不解,还望答疑。

      1. 这几天在仔细的研究SEO 实战密码这本书,总体感觉不错,唯一觉得有遗憾的是,书中分享的实际操作经验太少,下次出的时候,希望精简一些理论知识,分享你更多的经验。

    1. 请教下ZAC,你文章当中提到HTML无法实现301操作,这一点我觉得很有疑惑。

      我的一个旧网站有两种后缀的网页,分别是html和shtml。整站做301跳转到新的网站以后,发现html的页面301跳转是成功的:通过查询,旧页面会提示301,相对应的新页面提示200;

      但是shtml的页面是这样提示的:旧页面提示301,新页面却提示403。

      怎么会发生这样的情况?望解惑一下,多谢。。

  44. Zac老师,看过您的SEO实战密码后,感觉您的书写的非常好,又学到了不少东西,还没看完,书中对301的详情描述不是特多,我有个问题想问您一下,我想在我的VPS里做整站的301整站跳转该怎样做,我的空间的主机是windows,是设置IIS吗?怎样设置呢全站301,渴望Zac老师详细解答!

  45. 您好!我是个seo初学者,现在也在看您写的《seo实站密码》,现在想做301重定向,可你上面asp转向的代码写上去老是错误,提示少了(/%),而且我不知道那代码在要放在哪个页面。还有现在写了个web.config文件,放在根目录这样可以吗?就从winsguest.com转向www.winsguest.com

  46. 老师,您好。我最近在网上买了一本您写的书《SEO实战密码》然后也看了你的博客,对您真的是相当的佩服。学了许多您写的知识,但是对网站301重定向和URL标准化问题还是没解决。我也试了许多种方法都没成功。所以今天特地来求教老师您了。希望老师能够尽量详细点的告诉我,可以把方法发到我的邮箱。我的网址是www.nigly.com。非常希望能够得到老师您的帮忙。非常感谢。

  47. 我的站301怎么设置不了,网上的代码全部搜遍,没有一个可以用的。
    我的站为什么会这样,能帮我解决吗?

  48. 你好,我的网站被封后,需要做301重定向到新网站,以转移PR,但是我要到哪里去修改.htaccess 文件,被封网站现在FTP链接不上,(网站是用zencart系统建的)

留个言呗:

您的邮箱不会被显示在页面上。标有*的是必填项。