Skip to main content
 首页 » 网络技术

各种301重定向跳转设置方法分享

2015年12月06日219

作用

相比javascirp跳转、mete refresh跳转,php等动态语言reditect,301跳转对搜索引擎最友好,避免作弊嫌疑。

转移流量、权重。不会浪费在原url上的工作成果。

解决网址规范化问题。如xiangta.cc,www.xiangtc.cc,www.xiangta.cc/index.php实际返回都是主页内容,但他们却是不同的URL,对SEO来说不但是重复内容,更分散了权重,因此可用301转向到同一URL。

原理

根据HTTP协议,客户端向服务器发出请求,服务器返回数据应答头中状态码为301,表示永久转移到loction字段中的URL。

实现

DNS服务器

一般DNS服务器都提供URL转发功能,而且大部分用的就是301转发,如果虚拟主机服务器不支持301跳转、或者无法用程序实现时。可以使用域名服务器实现转发,DNS实现的301转发功能简单,只能实现域名、子目录等跳转,另外特别注意有的DNS服务器转发不一定是301,所以要检测一下。

WEB服务器

apache需要加载rewrite模块,然后在主机配置中或者在网站的.htaccess文件中写rewrite规则进行URL跳转设置。IIS同样可以加载rewrite模块,然后在httpd.ini文件中写rewrite规则。如果

能够控制IIS服务器,可以选中要跳转的域名或目录,图形方式设置资源重定向。

Options +FollowSymLinks
RewriteEngine on
rewritecond %{http_host} ^xiangta.cc [nc]
rewriterule ^(.*)$ http://www.xiangta.cc/$1 [r=301,nc]

或者

RewriteEngine On
RewriteCond %{HTTP_HOST} !^xiangta.cc$ [NC]
RewriteRule ^(.*)$ http://www.xiangta.cc/$1 [L,R=301]

表示整站所有的以带www的域名www.xiangta.cc为地址的网页都会301转向到不带www的域名xiangta.cc(不仅是首页,子目录/网页也可以)。如果是其他域名要重定向到 xiangta.cc 这个新域名,则在.htaccess文件中加入如下重定向代码:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.xiangta.cc/$1 [L,R=301]

动态网页程序

PHP的301跳转代码:

<?php
Header(HTTP/1.1 301 Moved Permanently);
Header(Location: http://xiangta.cc);
?>

网站改版后导致URL方式改变了,如老页面url是www.xiangta.cc/page.html,新页面url则是www.xiangta.cc/?p=3,老页面已不能访问了,新页面又没被收录,如果两个页面都保留的话,或许新页面就永远不会被收录了,因为内容重复了。这个时候就可以通过301跳转把老页面跳转到新的页面。

两个域名绑定了同一个空间,两个域名都被搜索引擎收录了,而只想用其中一个域名。不然会内容复制的。可以用301跳转。

在购买域名时,域名本身是不带有www的,由于在以前网站方都会增加一个"www"的子域名来帮助客户以更多的路径访问网站,客户会养成在网站前添加www来访问网站的习惯,所以如果没有做www.*.com的解析的话客户输入www.*.com便不能访问,基于此,一些域名提供商会自动帮购买者做了这个"www"的解析,这样带"www"的和不带两个域名同时可以访问一个同样的内容。但是这样的话,会分散某个域名的流量与PR值,最好的解决方案是将所有访问用301跳转定向到某个域名下。

URL转发url转发有两种方式,隐藏转发和(url转发后浏览器地址栏输入的网址不变)不隐藏转发(也叫显性转发:url转发后地址栏显示的地址为转发后的网址)。

不管是隐藏转发还是不隐藏转发,根据不同的域名注册服务商,可能会返回不同的http header。有的会使服务器返回302状态码给搜索引擎,而不是301 http 状态码。

有的是通过给浏览器窗口套用一个框架iframe的方式来实现隐藏转发,有的则是使用Javascript或Meta Refresh来实现不隐藏方式的url转发,不一定是真正用到301重定向,所以,应该尽可能少用url转发功能。

301.jpg