如何做搜索引擎好的301转向

2015-06-01
  • 984
  • 0
        由于302这种临时性的转向容易造成URL Hijacking,因此,我们的网站在域名迁移,页面URL更换,网站整体架构变动时,都需使用301来做永久性的转向。301转向较于302转向的搜索引擎好,也是老生常谈了,不过刚刚做过的一个项目中,就遇到了应该做301,却做成了302的情况,所在开始本文标题中相关内容的分享时,还是有必要首先再次强调一下,希望得到大家的重视。
        301转向的优势:
        1:明确告知搜索引擎该转向是永久性的,不会给搜索引擎造成到底该爬取哪个页面的困惑。
        2:旧页面累积的权重会全部传递到重定向后的页面,如果我们的页面是新做的,这一点会有助于新页面迅速得到权重并参与排名计算。
        3:用户体验友好。搜索引擎会逐渐删除索引库中原页面的索引和内容,重新爬取和索引新页面的内容,这样,用户在SERP结果页面看到的结果全是从新页面中提取出来的,SERP页面内容和新页面内容是一致的,确保用户体验友好。
        302转向的劣势:
        1:为临时性的转向,传达给搜索引擎的意思是站长随时有可能会取消该转向的设置,因此搜索引擎不一定会去爬行转向后的页面内容,因此在SERP结果页面可能还是会呈现原页面的内容。
        2:容易造成URL劫持,特别是在多个不同域名302到一个站点时,很容易造成网站被K掉。
        3:用户体验不友好。SERP页面和点击进入后的页面内容不一致,引起用户反感,导致网站跳出率飙升。
        那么,了解了301和302之间的友好性差别之后,我们开始本文的正题:如何去做搜索引擎友好的301跳转。
        一,301跳转的方式总结
        一般来讲用301跳转可以分为服务器端和页面端的跳转两种情况,我们逐一讲解:
        1:服务器端301(以Linux系统,Apache服务器和PHP脚本为例):
        1.1:通过URL重写模块实现
        步骤1:开启Apache配置文件中的重写模块

        将上图中196行处(#LoadModule rewrite_module modules/mod_rewrite.so)前面的#号去掉,并重启Apache,便开启了URL重写模块。
        步骤2:在网站根目录下创建.htaccess文件,然后在其中创建重写规则
        .htaccess文件中的重写规则模式:
<Ifmodule mod_rewrite.c>
     RewriteEngine On
     #在这里写入规则
</Ifmodule>
        举例:
<Ifmodule mod_rewrite.c>
      RewriteEngine On
      RewriteRule ^category/(.+)/$ category/category.php?categoryId=$1 [L] 
</Ifmodule>
        上例中的规则意思是:在category目录下的除了换行意外的任何输入(.+)都会被重写到category/category.php?categoryId=(.+)这个页面进行处理。
        即,如果在category/后输入了3567(category/3657),这个这个url会被重定向到category/ category.php?categoryId=3657这个页面去处理。
        By the way,URL伪静态的处理也是需要通过重写模块和.htaccess中的正则匹配来实现的。
        1.2:在.htaccess文件中使用redirect指令来进行301跳转
        规则: redirect  301  原url  301后的url
        2:页面级别301
        2.1:通过服务器端编程脚本语言来实现(以PHP为例)
        在页面的文件中写入以下代码:
<?php
 Header( "HTTP/1.1 301 Moved Permanently" );    
Header( "Location: 这是是要301跳转到的url" );
?>
        举例:
<?php
Header( "HTTP/1.1 301 Moved Permanently" );    
Header( "Location: http://www.netconcept.cn" );
?> 
        上面的代码意思是会将当前页面301到http://www.netconcept.cn这个网址。
        注意,Header函数为HTTP标头的输出,所以代码中在它之前都不能有任何输出。
        2.2:rel="canonical"标签
        在html代码的head部分写入以下代码,便可实现
<link rel="canonical" ” href="此处是规范化指向的网址" />
        此标签为网址规范化标签,最开始由谷歌,雅虎,必应提出,是为了便于搜索引擎在面对重复或重复度较高的页面时应该选择哪一个作为规范化的结果返回给用户而设置。百度最早并不支持该标签,但是2013年初的时候百度也声明开始支持此标签(相关文档具体可见:http://zhanzhang.baidu.com/wiki/112/)。此标签标识后的页面虽然并不像传统的301设置后一样会进行页面跳转,但搜索引擎会当做301看待。
        上面简单介绍了四种常见301跳转方式,可根据不同的情况合理的选择使用。
        最后,再补充两种有碍搜索引擎友好的页面跳转方式:
        1:Meta标签 refesh
        <meta http-equiv="Refresh" Content="0; url=http://www.netconcepts.cn" />以上代码如果出现在html的head部分,会使当前页面一打开后就跳转到url中指定的网址。虽然也实现了跳转,但是这种跳转搜索引擎并不喜欢,要慎用!
        2:JS转向
        JS转向的方法较多,页面中的js代码都有<script></script>标记,所以很好辨识出其中的转向代码,这里仅介绍其中的两种方式:
        2.1: location.assign方法:
<script>
window.location.assign("http://www.netconcepts.cn ")
</script>
        会将当前页面转向到assign方法中指定的url参数。
        2.2:location.href属性
<script>
 window.location.href = "http://www.netconcepts.cn ";
</script>
        会将当前页面转向到href属性指定的url。
        二,301跳转时的一些注意事项
        1:.htaccess文件要放置在根目录下,权限建议设置为644.
        2:确保服务器端的正则表达式规则书写正确
        3:301跳转前后的网页一定是要有内容性的紧密联系。
        一些网站由于改版涉及到重新规划连接结构时,可能会碰到新旧url本身在字面上有一定的联系,但是在规划前后的内容上两个连接所代表的页面内容是无丝毫关联的,这种情况下就一定不要将旧url 301到新的url。 
        总结:
        流量是一切的根本,不论你的网站是销售转化为目标的电商类站点,还是以广告的展示量(CPM)或点击率(PPC)或用户行为(PPA)为目标的博客,新闻资讯,评论测评,下载类站点,没有流量的导入就无从盈利,虽然流量的获得可以通过多种渠道,不一定靠SEO,但是在当今社会人们的信息检索方式还是主要依赖搜索引擎的情况下,我们还是有必要将从搜索引擎端获得的流量最大化,毕竟,较于其它的付费推广方式,SEO本身的所带来的流量体量就是不可忽视的,再者其成本极其低廉,而且流量的质量也较高,也更加容易为公司带来转化。
        最近的一个项目,客户方公司的技术人员再做301跳转时,全部做成了302跳转,没有遵循相应的搜索引擎友好性,且多个网站之间的跳转混乱,但幸好处理的及时,没有造成大的问题。本文也以此为鉴,总结自己的一点浅薄经验,希望对正在考虑做301跳转的网站,有所帮助。