301永久重定向是在搜索引擎优化中很常用的一个域名地址跳转的操作,可以帮助我们转移域名的权重,但是在做301重定向的时候由于服务器系统、网站程序语言、域名和链接地址的不同,使用的方法也不同,这个时候我们就需要根据具体的网站环境来制定不同的301重定向方法。
一、什么情况下使用301重定向
在我们讲述301永久重定向之前(不明白什么是301永久重定向的博友,可以先看下《什么是301永久重定向》的相关介绍),首先就要先明白网站在什么情况下才会使用到301永久重定向呢?其目的又是为何呢?
1、为了网址URL的标准化
我们经常遇到的就是带www的域名和不带www的域名301重定向问题,在未做301重定向之前,无论是用户或搜索引擎蜘蛛,通过这两个网址是都能访问网站的同一个页面。
对于用户可能不太在意,因为无论用哪个网址都能访问到网站页面,但是对于搜索引擎来说就是2个不同的URL,意味着2个页面的权重就要分别计算了,最终结果就是网站权重的分散。
2、网站启用了新域名
由于某些原因网站启用了新域名,老域名这时候也需要301重定向到新的域名,这样可以告诉搜索引擎网址启用了新的网址或者是用户访问原来的网址不至于打不开而损失了流量。
我们还关心的一个问题就是老域名的权重是否能传递?权重的传递是需要一个过程的,一般谷歌的反应比百度迅速,至于权重是否能够完全传递,马海祥认为是不会的。
3、网站内部结构的调整
SEO站内优化中涉及到目录结构的优化,有些目录网址需要进行301重定向,还有内部一些错误的页面也可以做301重定向,提高用户体验。
4、当需要删除网站的某些链接时
当出于需要删除网站中的某些目录时,比如我要删除下的SEO导航,这时就可以用301永久重定向到网站首页。
二、不同环境下使用301重定向的方法
对于网站在不同环境,不同网站后台程序下,我们又该如何实现我们的301永久重定向呢?具体的方法有以下几点:
1、在网站代码中设置301的方法
(1)、PHP下的301重定向
header("HTTP/1.1 301 Moved Permanently");
header("Location:http://www.mahaixiang.cn/");
exit();
(2)、ASP下的301重定向
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.mahaixiang.cn/"
Response.End
(3)、ASP .NET下的301重定向
private void Page_Load(object sender, System.EventArgs e)
{
Status = "301 Moved Permanently";
AddHeader ("Location","http://www.mahaixiang.cn/);
}
2、用HTML跳转
例如:<META HTTP-EQUIV=REFRESH CONTENT="5;URL=http://www.mahaixiang.cn/">,表示5秒后自动跳转到首页,你也可以把时间设置的更短,但这样做也很容易被搜寻引擎容易误判为spam而遭到惩罚。
3、用javascript跳转
<script language="javascript">location.href=‘http://www.mahaixiang.cn/'>
4、利于服务器实现301重定向的方法
(1)、windows主机
在windows主机上,主要是利于IIS服务器实现301重定向具体方法步骤是:
①、打开internet信息服务管理器,在欲重定向的网页或目录上按右键;
②、选择“重定向到URL”;
③、在“重定向到”输入框中输入要跳转到的目标网页的URL地址;
④、选中“资源的永久重定向”(切记);
⑤、最后点击“应用”。
(2)、Unix/Linux主机
pache服务器实现301重定向的方法是在.htaccess文件中增加301重定向指令:
Redirect permanent / http://www.mahaixiang.cn/ (将目录下内容重定向到http://www.mahaixiang.cn/ )
Redirect permanent /index.php http://www.mahaixiang.cn/(将网页index.php重定向到http://www.mahaixiang.cn/)
(3)、采用“mod_rewrite”技术
通过该技术进行的改变将在.htaccess文件中体现出来,形如:
RewriteEngine on
RewriteRule ^(.*)$ http://www.mahaixiang.cn/$1 [R=301,L]
或
Options +FollowSymLinks
RewriteEngine on
RewriteCond % ^mahaixiang.cn
RewriteRule ^(.*)$ http://www.mahaixiang.cn/$1 [R=permanent,L]
这里,马海祥再跟大家分享几种.htaccess文件的其它几种写法:
①、重定向mahaixiang.cn到www.mahaixiang.cn
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mahaixiang.cn/$ [NC]
RewriteRule ^(.*)$ http://www.mahaixiang.cn/$1 [L,R=301]
②、重定向www.mahaixiang.cn到mahaixiang.cn
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.mahaixiang.cn$ [NC]
RewriteRule ^(.*)$ http://mahaixiang.cn/$1 [L,R=301]
③、老域名A指向新域名B
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.a.com$ [NC]
RewriteRule ^(.*)$ http://www.b.com/$1 [L,R=301]
5、绑定/本地DNS
如果具有对本地DNS记录进行编辑修改的权限,则只要添加一个记录就可以解决此问题,若无此权限,则可要求网站托管服务商对DNS服务器进行相应设置。
DNS服务器的具体设置方法:
若要将blog.mahaixiang.cn指向www.mahaixiang.cn,则只需在DNS服务中应增加一个别名记录,可写成:blog IN CNAME www.mahaixiang.cn。
如需配置大量的虚拟域名,则可写成:* IN CNAME www.mahaixiang.cn.
这样就可将所有未设置的以mahaixiang.cn结尾的记录全部重定向到www.mahaixiang.cn上了。
三、转发和重定向的区别
一句话,转发是服务器行为,重定向是客户端行为。具体来说就是转发时一次请求,重定向是2次请求,转发地址栏不会发生改变,重定向地址栏会改变,转发在项目内,重定向可以转到项目外。
当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。
与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。
那么,我们该怎么选择是用重定向?还是用转发呢?
通常情况下转发更快,而且能保持request内的对象,所以他是第一选择,但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用,如果你不想看到这样的情况,则选择转发。
四、301和302的区别
301代表永久性转移,301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,马海祥都建议使用301来做转址。
302代表暂时性转移,只有当一个网站或网页在24到48小时之内临时移到其它位置的情况下才能使用该命令。能够对302重定向具备优异处理能力的只有Google,在前些年,不少搞SEO曾广泛应用这项技术作弊,但也很容易遭受惩罚。
点评:
目前来说,301永久重定向是搜索引擎认可的一种域名跳转行为,正确的使用301永久重定向对网站的SEO优化无任何负面的影响,而且网页A的关键词排名和PR级别都会传达给网页B,表示本网页永久性转移到另一个地址,给搜索引擎一个友好的信息,告诉它此页面已永久重定向,避免搜索引擎找不到页面。