PHP专题

详解301永久重定向实现方法及重定向循环的解决办法

什么是301重定向?关于301重定向的概念(301 Permanently Moved):
直接问百度或谷歌就可以了。当然你也可以简单的认为网址URL   A指向B,或者是A、B、C等分别指向了一个想用来做排名的域名D,然后在访问这些页面的时候自动跳转到最终指向的页面。
为什么要做301重定向?
一、为了网址URL的标准化
我们经常遇到的就是带www的域名和不带www的域名301重定向问题。在未做301重定向之前,无论是用户或搜索引擎蜘蛛,通过这两个网址是都能访问网 站的同一个页面。对于用户可能不太在意,因为无论用哪个网址都能访问。但是对于搜索引擎来说就是2个不同的URL,意味着2个页面的权重就要分别计算了,最终结果就是网站权重的分散。那么从SEO的角度分析,镜像页面的存在危害也很大。上一篇文章中提到了在发外链的时候URL带不带www的问题。同样某网站首页http://www.xxx .com/portal.php与 http://www.xxx .com/;还有以/index.asp   /default.asp  /index.php等形式结尾的首位网址,在未做301永久重定向之前,访问2个网址同样是看到同一个首页,同样是权重分散的问题。这些都是网站优化的过程中必须解决的问题。
二、网站启用了新域名
由于某些原因网站启用了新域名,老域名这时候也需要301重定向到新的域名。这样可以告诉搜索引擎网址启用了新的网址或者是用户访问原来的网址不至于打不开而损失了流量。我们还关心的一个问题就是老域名的权重是否能传递?权重的传递是需要一个过程的,一般谷歌的反应比百度迅速。至于权重是否能够完全传递保定SEO认为是不会的。至少我还没有看到关于301重定向能够完全传递权重这一说法的有效案例。
三、网站内部 结构的调整
SEO站内优化中涉及到目录结构的优化,有些目录网址需要进行301重定向。还有内部一些错误的页面也可以做301重定向,提高用户体验。
301重定向怎么做
1.asp 301重定向的方法:可以在在 default.asp或index.asp 文件 的最顶部添加代码
<%Response.Status=”301 Moved Permanently”Response.AddHeader “Location”,”http://www.sogoseo.com/”Response.End%>

2.php301重定向的方法:可以在index.php文件的顶部添加代码
<?php$the_host = $_SERVER[‘HTTP_HOST’];//取得当前域名   $request_uri = isset($_SERVER[‘REQUEST_URI’]) ? $_SERVER[‘REQUEST_URI’] : ”;//判断地址后面是否有参数   if($the_host != ‘www.sogoseo.com’)//跳转到指向的地址  {      header(‘HTTP/1.1 301 Moved Permanently’);//发出301头部      header(‘Location: http://www.sogoseo.com/’.$request_uri);//该指向地址的的格式}?>

3.IIS服务器下设置301重定向的方法,适用于使用Window网络服务器的用户,以http://xxx.com/指向到http://www.xxx.com/为例

  • 首先新建一个站点,对应目录如D:\wwwroot\301web。添加一个index.html文件和404.html文件,然后绑定要301跳转的域名http://xxx.com
  • 在IIS中选择刚才我们建立的站点,右键,属性,主目录,选择重定向到,输入网址如:http://www.xxx.com/,并选择永久重定向选项,就可以了。

4.利用.htaccess文件的设置实现301重定向

RewriteEngine On
RewriteCond %{HTTP_HOST} !^xxx.com/$ [NC]
RewriteRule ^(.*)$ http://www.xxx.com/$1 [L,R=301]
如果是老域名A(http://www.xxx.com/)指向新域名B(http://www.sogoseo.com/)则可以将.htaccess文件修改下面的代码
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.xxx.com$ [NC]
RewriteRule ^(.*)$ http://www.sogoseo.com/$1 [L,R=301]
为了避免出现错误可以把.htaccess文件备份一份哦!

  • 在Windows中是不可以直接通过“新建”文件来创建.htaccess文件的,不过我们可以在本地电脑上写一个htaccess.txt的记事本文件,然后 通过FTP来修改文件名,改成.htaccess就可以了,然后301重定向就可以参照在linux空间下的.htaccess文件的设置方法了。

5.绑定/DNS解析域名实现301重定向
前提是有修改本地DNS解析的权限,如果没有可以要求空间商辅助完成设置。假如是将blog.xxx.com做301指向www.xxx.com,只需要在DNS解析中添加一条别名指向如:blog   IN NAME   www.xxx.com  就可以了。如果是多个子域名别名指向则如下表示*  IN NAME   www.xxx.com
通过以上的几种方法我们进行301重定向的设置,但是成功与否还要进行检测。首先我们可以借助检测工具,通过返回的Http状态码来判断是否成功。返回的状态码是301表示设置成功。使用chinaz的站长工具来进行检测。当然你也可以在浏览器的地址栏输入网址看看是否跳转。SEO要的不仅是思维、技术,更要关注每个细节,决定着网站建设的成绩!

我在自己服务器测试了一下,按照原文写会陷入循环重定向,改了下发现要这样写才能实现301重定向,不知道是不是个别服务器的问题呢?还是其他原因?
RewriteEngine on
rewriteCond %{http_host} ^xxxx.com [NC]
rewriteRule ^(.*)$ http://www.xxxx.com/$1 [R=301,L]

详解301永久重定向实现方法及重定向循环的解决办法已关闭评论
Avatar photo

人生长恨水长东