301永久重定向的四种实现方法

作者:www.mf591.com 文章来源: 时间:2008-9-30 18:28:59 阅读次数:587

当我们在网站建设中如遇到需要网页重定向的情况:象网站调整,如改变网页目录结构,网页被移到一个新地址,再或者,网页扩展名改变,如因应用需要把.php改成.Html或.shtml,在这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户还会得到一个404页面错误信息,访问流量白白丧失;再如某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点,等等。

  常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh:

301 redirect: 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。


302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam(作弊)而遭到惩罚。


meta fresh: 这在2001年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会被判断为spam。
  这里我们主要谈谈如何通过301 Redirect实现网页重定向

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

301永久重定向有何作用?在哪些情况下适用?

从301永久重定向的定义可以看出,它是一种状态码,会向搜索引擎或浏览器发出信息:本网页的地址已经永久改变了。并会把新的地址传达过去。而相应的就是:我们输入网址A访问,显示出来的是转向后的网址B,转向过程极短以至无法察觉。所以,301永久重定向对于访客来说,作用就是将他要访问的而实际上已不存在的网址转到另一个网址,避免出现“此网页无法显示”之类的错误;对于搜索引擎优化|SEO来说,给搜索引擎一个友好的信息,告诉它此页面已永久重定向,避免搜索引擎找不到页面。这对于网站的SEO是很重要的,因为301永久重定向对SEO无任何不好的影响!而且网页A的关键词排名和PR级别都会传达给网页B!


当出现以下情况的时候我们通常会用到301和302转向技术

一、当出于需要删除网站中的某些目录时,可以通过301永久重定向将此目录重定向到网站首页。

二、网站更换域名时,通过301永久重定向将旧域名重定向至新域名,挽回流量损失和SEO。

三、想要多个域名同时指向同一网站时,通过301永久重定向可以实现。一般的虚拟主机后台提供将mf591.com和www.mf591.com等多个域名绑定到同一网站的功能,但这样对收录可能有影响:《绑定多个域名对搜索引擎收录的影响》。而用301永久重定向就没有这样的担忧。

四、实现网址规范化。
     有以下4个网址:
     http://mf591.com
     http://www.mf591.com
     http://mf591.com/index.asp
     http://www.mf591.com/index.asp
     查询上面4个网址的PR值,或用site:mf591.com查看网站首页,如果结果一致,说明网站没有规范化问题;如果不一致,表明有规范化问题。出现此问题时,可以将上面4个网址通过301永久重定向指向同一个网址http://www.mf591.com,解决了。

如何实现301永久重定向?本人介绍以下四种方法
现在目前估计用虚拟主机的比较多,应该是第二种方法最为常用了,本人也是这么做的,如果有哪位有不明白的地方,欢迎加我QQ讨论。

一、可以通过代码实现301永久重定向。

HTML网页无法实现301永久重定向。因为HTML文件一被读取,就已经返回表示一切正常的200状态码了。

ASP或PHP网页。比如,你要删除某个目录A,想实现访问http://www.mf591.com/qqbiaoqing/时跳转到http://www.mf591.com,可以:

ASP网页写法如下:在目录A下新建index.asp,写入代码:

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

那么访问http://www.mf591.com/qqbiaoqing/其实就是访问http://www.mf591.com/qqbiaoqing/index.html,就会自动跳转到http://www.mf591.com。

PHP网页写法:在目录A下新建index.php,写入代码:

<?
header("HTTP/1.1 301 Moved Permanently");
header("Location:http://www.mf591.com");
exit();
?>


上面的代码经本人亲自测试可行!注意代码不要写成一行,不然会出错!直接复制上面的代码使用可能会因为字体的原因导致出错,所以出错时请自己写一遍!你可以试着访问本站的mf591.com这个域名,马上就转向到了www.mf591.com了,这就是我把mf591.com用301永久转向到了www.mf591.com了。

需要注意的是:如果http://www.mf591.com网站目录下同时存在index.html和index.asp,设置文档优先级html>asp时,输入http://www.mf591.com访问到的是http://www.mf591.com/index.html;设置文档优先级asp>html时,访问的是http://www.mf591.com/index.asp.

二、虚拟主机301永久重定向.

如果你的网站空间是使用虚拟主机或合租空间,无法对WEB服务器(IIS、Apache)进行设置,可以利用子目录绑定实现301永久重定向。首先建立子目录A,然后把你要进行重定向的域名A绑到这个目录,在这个子目录里面建立一个index.asp或index.php文件,写入上面介绍的代码。那么访问子目录A下的index.asp或index.php也即访问域名A,就会跳转到绑定在其他子目录上的域名B。

三、IIS实现301永久重定向。
如果你有自己的服务器,有对IIS或Apache管理的权限,那么就可通过对IIS或Apache进行设置来实现301永久重定向。

进入IIS管理窗口,右键点击网站名或某个目录或某个文件,在弹出菜单选择“属性”,在“目录”或“主目录”窗口下选中“重定向到URL(U)”,输入将要定向到的网址,并勾选“资源的永久重定向”,确定即可。


四、Apache实现301永久重定向。

Apache中的分布式配置文件“.htaccess”提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。比如,在目录A下放.htaccess,写入代码:

redirect 301 /A http://www.mf591.com 或
redirect permanent /A http://www.mf591.com

访问http://www.mf591.com/qqbiaoqing/及其子目录时即可重定向到http://www.mf591.com。若将整个网站或域名重定向到另一网站或域名,则可写入redirect 301 / http://www.mf591.com,将.htaccess放在根目录即可。


如果要实现“批量重定向”,比如,把http://mf591.com/a.html重定向到http://www.mf591.com/a.html,把http://mf591.com/b.html重定向到http://www.mf591.com/b.html。。。等等,即把http://mf591.com下的所有文件重定向到http://www.mf591.com下的同名文件,则要用到mod_rewrite模块。在.htaccess中写入:

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

即可。

或将绑定的其他多个域名重定向到主域名:

RewriteEngine on
RewriteCond % ^mf591.com$ [OR]
RewriteCond % ^bbs.mf591.com$ [OR]
RewriteRule ^(.*)$ http://www.mf591.com/ [R=301,L]

待续~~~~