2024-09-28 00:12:45
一、什么是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重定向
假设有下面几个网址:
都做301重定向到
目前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} ^dongrv.com [NC]
RewriteRule ^(.*)$
将页面301重定向到另外一个页面
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^/oldpage.html$ /newpage.html[NC,L,R=301]
四、IIS服务器下做301重定向设置方法
示例:将dongrv.com 跳转到
1、新建一个站点,对应目录如d:\site。该站点主要用于转向,目录可以是空的,不需要任何文件。然后为该站点绑定要跳转的域名dongrv.com,如图:
2、在IIS中选中刚才我们建立的站点,右键,属性,主目录,选择重定向到,输入另一个绑定好www.dongrv.com域名的网站地址(这个网站下存放有网站内容)。输入的地址是:
对于$S$Q字符,这里解释一下:
$S 将请求的URL的后缀传递给新的URL。后缀是用重定向的URL 代替之后,初始URL 中所保留的部分。
如果未选中 上面输入的准确URL 选项,则结果目标URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
$Q 将初始URL中的参数(如 querystring 参数)传递至新的 URL,包括问号(?)。
如果不加上 $S$Q 字符的话,内页的301都会跳转到首页,加上$S$Q字符的目的就是内页也能准确的跳转到新域名的对应内页。
好了,这样就完成了301永久重定向的设置,设置好之后最好能测试一下301重定向是否成功。站长工具的HTTP状态工具(
五、使用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: ^dongrv\.com$
RewriteRule (.*)
# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^dongrv\.com$
RewriteRule (.*)
2. 不同域名之间的301转向
# ISAPI_Rewrite 2.x 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond Host ^www\.test10000\.com$
RewriteRule (.*)
# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^www\.test10000\.com$
RewriteRule (.*)
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:
?
2、ASP下的301重定向
%@ Language=VBScript %
%
Response.Status = 301 Moved Permanently
Response.AddHeader Location,
%
3、ASP .NET下的301重定向
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = 301 Moved Permanently;
Response.AddHeader (Location,
}
4、JSP下的301重定向
%
response.setStatus(301);
response.setHeader(Location,
response.setHeader(Connection, close);
%
提示:如果返回报头中只有Location,但没有明确提到状态代码时,就意味着一个302临时重定向。请谨记于心。例如下面都是302重定向:
PHP 下的302重定向
php header(Location:
?
Asp 下的302重定向
%
Response.Redirect
%
ASP.NET 302重定向
private void Page_Load(object sender, System.EventArgs e)
{
Response.Redirect(
}
JSP 下的302重定向
%
response.sendRedirect(
%
总结:301重定向是一种对搜索引擎最友好的网址转向方法。在众多重定向技术中,301永久性重定向是最为安全的一种途径,也是极为理想的一款解决方案。无论是URL永久性改变,还是多种格式URL规范化都离不开301重定向。
其他问题:
网站301重定向的作用
301重定向的作用有很多,平时站长在做301重定向的时候,一是为了URL规范化并集中权重不让权重分散、二是为了网站改版,将旧版本的页面的所有指标全部转移到新版本的页面上。而实施301重定向可以做到这些,在作用上也是非常的强大,也建议中小企业的站长有效的利用301重定向给网站带来的作用。
网站域名在什么情况下必须做301重定向
以下五种情况是必须要做301重定向的,当然如果这五种情况都没有发生的话可以选择不做,下面详细的介绍一下。
①:网站的旧内容过期并被删除掉
网站的一些内容过期了,所以要被删掉了,如果还想留着可以通过301重定向实现。
②:网站有一些具有链接和流量的无效URL
如果你发现这些无效的URL还有流量权重,可以通过301重定向重新生成页面。
③:网站更换了主机托管公司
如果网站更换了主机托管公司,不影响用户查找网站内容的任何URL的情况下,可以不需要做301重定向。
④:网站更换程序
网站进行较大的改版,网站程序需要更换,此时会影响很多URL,可以通过301重定向来解决。
⑤:网站实施URL规范化
网站默认的URL分:
1、abc.com
2、
3、abc.com/index.html
4、
为了进行网址规范化和不分散权重,通常只出现一个标准的URL,我们可以通过301重定向来实现。例如:我的网站网址只出现
⑥:网站因为各种原因而改变现有内容的URL
可能企业网站因为各种各样的原因而改变了现有内容的URL,这种情况的发生是站长没法预测到的,如果这种情况发生了而改变了URL,建议通过301重定向来解决,尽力避免死链接的出现。
总结上述需要注意:并不是所有的情况都是需要做301重定向的;但是,任何URL的更改都是需要做301重定向的。原因很简单,为了避免出现404错误页面而导致不该发生的情况发生。
网站做301重定向的注意事项
当301重定向实施完之后,旧版本页面跳转到了新版本页面,或网址规范化了再或者其他的,大部分的站长都不会注意到301的HTTP状态是否返回成功。就在此时,可能有些网站的301重定向不传递状态或者出现404错误的状态码,这样容易造成任何情况下做的301重定向无法达到效果。笔者认为,想要正确的、有效果的做301重定向,一些细节还是需要注意的。