详解301重定向及实现方法

一、什么是301重定向  

301重定向(或叫301跳转、301转向)是用户或搜索引擎蜘蛛向网站服务器发出访问请求时,服务返回的HTTP数据流中头信息(header)部分状态码的一种,表示本网址永久性转移到另一个地址。其他常见的状态码还包括:200(表示一切正常);404(网页不存在);302(临时性转向);500 (内部程序错误);

 除了301转向,网址转向还有其他方法,如302转向、JavaScript转向、PHP/ASP/CGI程序转向、Meta Refresh等。

301重定向对搜索引擎优化具有不可替代的作用。用301重定向巩固规范版本的URL,重拾权重,防止搜索结果的重复内容。从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。

二、什么情况下使用301重定向  

网站改版经常需要用到301重定向:如网站更换域名,改变网页目录结构,网页被移到一个新地址,网页扩展名改变,如因需要把 .php 改成 .html。在这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户还会得到一个404页面错误信息,访问流量白白丧失。使用301重定向不仅能使页面实现自动跳转,告诉用户你已经换了新的网址了。同时也告诉搜索引擎,这个才是真正的网址,搜索引擎只对重定向后的新网址进行索引,同时又会把旧地址权重如数转移到新地址下,从而不会让网站的排名因为网址变更而受到影响。

一个网站注册了多个域名,需要通过301重定向让访问这些域名的用户自动跳转到其中一个主域名。这样做是为了避免造成大量复制内容,而遭到搜索引擎惩罚。因为在搜索引擎看来,每个域名都是一个独立的站,多个域名指向同一站,会被认定为站点雷同,内容复制,轻则不收录进入沙盒期,重则直接被K。

实现网址规范化也需要301重定向

假设有下面几个网址:

http://www.admin10000.com/index.html

http://admin10000.com

http://admin10000.com/index.html

都做301重定向到 http://www.admin10000.com(选定的规范化网址),搜索引擎就知道 http://www.admin10000.com 是规范化网址,而且会把上面列的网址权重传递集中到规范化网址。

目前Google会传递大部分权重,但不是百分之百权重。百度会传递所有权重。Google对301的识别、反应、完成权重传递,需要1~3个月时间。百度对301处理则比较保守,新旧URL会同时存在于数据库很长时间。

三、Apache服务器实现301重定向  

如果网站使用LAMP(Linux + Apache + MySQL + PHP)主机,可以利用Apache的mod_rewrite对URL进行重写或重定向。需要以下几步:

1、首先确保开启了mod_rewrite功能。

用文本编辑器打开Apache安装目录\conf\httpd.conf,找到“#LoadModule rewrite_module modules/mod_rewrite.so”这行,去掉前面的“#”;

继续查找“AllowOverride None”,修改为“AllowOverride All”;

然后,重启Apache即可。

2、在你需要URL重定向的网站根目录下放一个.htaccess文件,文件名是.htaccess,Windows下不能直接建立,你可以用记事本另存为。

3、在.htaccess中通过正则表达式重定向到需要的页面。示例如下:

将不带www的顶级域名301重定向到带www的域名    

Options +FollowSymLinks     

RewriteEngine On     

RewriteCond %{HTTP_HOST} ^admin10000.com [NC]    RewriteRule ^(.*)$ http://www.admin10000.com/$1 [L,R=301]

将页面301重定向到另外一个页面    

Options +FollowSymLinks     

RewriteEngine On     

RewriteRule ^/oldpage.html$ /newpage.html[NC,L,R=301]

四、IIS服务器下做301重定向设置方法  

示例:将admin10000.com 跳转到 www.admin10000.com

1、新建一个站点,对应目录如d:\site。该站点主要用于转向,目录可以是空的,不需要任何文件。然后为该站点绑定要跳转的域名admin10000.com,如图:

 2、在IIS中选中刚才我们建立的站点,右键,属性,主目录,选择重定向到,输入另一个绑定好 www.admin10000.com 域名的网站地址(这个网站下存放有网站内容)。输入的地址是:http://www.admin10000.com$S$Q,同时注意选中下面的"资源的永久重定向选项" 和 “上面输入的准确URL” 这2个选项。如下图:


对于$S$Q字符,这里解释一下:

$S 将请求的URL的后缀传递给新的URL。后缀是用重定向的URL 代替之后,初始URL 中所保留的部分。

如果未选中 "上面输入的准确URL" 选项,则结果目标URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。

$Q 将初始URL中的参数(如 querystring 参数)传递至新的 URL,包括问号(?)。

如果不加上 $S$Q 字符的话,内页的301都会跳转到首页,加上$S$Q字符的目的就是内页也能准确的跳转到新域名的对应内页。

好了,这样就完成了301永久重定向的设置,设置好之后最好能测试一下301重定向是否成功。站长工具的HTTP状态工具(http://tool.chinaz.com/pagestatus/)即可查到,如果查到的返回状态是301就说明你已经成功了。

五、使用ISAPI_Rewrite实现IIS的301重定向  

ISAPI_Rewrite是用于IIS的第三方URL重写组件。它是基于正则表达式的,类似Apache mod_rewrite功能,不仅可以实现URL重写,还可以实现301重定向。

ISAPI_Rewrite组件有免费版(Lite)以及商业版(Full),免费版只支持全局httpd.conf 配置,不能对每个站点进行单独设置,而商业版可以让每个站点自定义URL重写规则,只要将httpd.ini 放在站点根目录下就能生效。

请使用 ISAPI_Rewrite 2.x 或者 最新的3.0 版本(它兼容Apache的mod_rewrite的语法),而较早的1.x 版本不支持301重定向功能。

下面给出示例:

1. 将不带www的顶级域名301重定向到带www的域名

# ISAPI_Rewrite 2.x 版本 

[ISAPI_Rewrite] 

# 3600 = 1 hour 

CacheClockRate 3600 

RepeatLimit 32 

RewriteCond Host: ^admin10000\.com$ RewriteRule (.*) http://www.admin10000.com$1 [I,RP]

# ISAPI_Rewrite 3.0 版本 

[ISAPI_Rewrite] 

# 3600 = 1 hour 

CacheClockRate 3600 

RepeatLimit 32 

RewriteCond %{HTTP:Host} ^admin10000\.com$ RewriteRule (.*) http://www.admin10000.com$1 [NC,R=301]

2. 不同域名之间的301转向

# ISAPI_Rewrite 2.x 版本 

[ISAPI_Rewrite] 

# 3600 = 1 hour 

CacheClockRate 3600 

RepeatLimit 32 

RewriteCond Host ^www\.test10000\.com$ RewriteRule (.*) http://www.admin10000.com$1[I,RP]

# ISAPI_Rewrite 3.0 版本 

[ISAPI_Rewrite] 

# 3600 = 1 hour 

CacheClockRate 3600 

RepeatLimit 32 

RewriteCond %{HTTP:Host} ^www\.test10000\.com$ RewriteRule (.*) http://www.admin10000.com$1 [NC,R=301]

3. 将页面301重定向到另外一个页面

# ISAPI_Rewrite 2.x 版本 

[ISAPI_Rewrite] 

# 3600 = 1 hour 

CacheClockRate 3600 

RepeatLimit 32 RewriteRule ^/oldpage.html$ /newpage.html[I,O,RP,L]

# ISAPI_Rewrite 3.0 版本 

[ISAPI_Rewrite] 

# 3600 = 1 hour 

CacheClockRate 3600 

RepeatLimit 32 

RewriteRule ^/oldpage.html$ /newpage.html[NC,L,R=301,O]

六、在网页后台程序中实现301重定向  

如果页面是ASP/PHP/JSP/ASP.NET 可以再后台代码中做301重定向。

但是我个人不推荐这样,因为在服务器上做301跳转是在你的页面执行之前就开始跳转,效率高。而程序代码中做301,要为每个页面头部加转向代码,比较麻烦。

示例如下:

1、PHP下的301重定向<?   Header("HTTP/1.1 301 Moved Permanently");   Header("Location: http://www.admin10000.com"); ?>

2、ASP下的301重定向<%@ Language=VBScript %> <%   Response.Status = "301 Moved Permanently"   Response.AddHeader "Location", "http://www.admin10000.com" %>

3、ASP .NET下的301重定向<script runat="server"> private void Page_Load(object sender, System.EventArgs e) {       Response.Status = "301 Moved Permanently";       Response.AddHeader ("Location", "http://www.admin10000.com"); } </script>  4、JSP下的301重定向<%   response.setStatus(301);   response.setHeader("Location", "http://www.admin10000.com");   response.setHeader("Connection", "close"); %>

提示:如果返回报头中只有Location,但没有明确提到状态代码时,就意味着一个302临时重定向。请谨记于心。例如下面都是302重定向:

PHP 下的302重定向

<?    php header("Location: http://www.admin10000.com"); ?>

Asp 下的302重定向

<%    Response.Redirect "http://www.admin10000.com/" %>

ASP.NET 302重定向

<script runat="server">   private void Page_Load(object sender, System.EventArgs e)   {      Response.Redirect("http://www.admin10000.com");   } </script>

JSP 下的302重定向

<%     response.sendRedirect("http://www.admin10000.com"); %>

总结:301重定向是一种对搜索引擎最友好的网址转向方法。在众多重定向技术中,301永久性重定向是最为安全的一种途径,也是极为理想的一款解决方案。无论是URL永久性改变,还是多种格式URL规范化都离不开301重定向。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 什么是重定向? 所谓重定向就是将网页自动转向重定向,即:301永久性重定向和302临时性重定向。实施301后,新网...
    码课sir阅读 2,214评论 0 3
  • 2017新的百度SEO优化规则又出了新算法,但是不管怎么变化,SEO网站优化最基础的工作还是大同小异,今天在这里给...
    528894com阅读 958评论 0 0
  • 重写规则 【重写规则的作用范围】 可以使用在Apache主配置文件httpd.conf中 可以使用在httpd.c...
    桖辶殇阅读 1,658评论 0 0
  • 一,简介: Apache的rewrite模块,提供了一个基于正则表达式规则的重写引擎,用来(on the fly)...
    四月不见阅读 4,396评论 0 8
  • 好没心思 忆不起前尘 思不得往世 悟不了今生 醉不像醉 醒不像醒 清楚不清楚 明白不明白 看山像水 看水似雾...
    我的猫叫老板娘阅读 251评论 2 3