`

301永久重定向

阅读更多

 

  除了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重定向。

分享到:
评论

相关推荐

    IIS服务器下做301永久重定向设置方法[可以传参][图文]

     在网络上看了些教程,再根据自己的实践,也终于搞定了IIS服务器上的301永久重定向设置问题。实现方法如下: 1.新建一个站点,对应目录如E:\wwwroot\301WEB。该目录下只需要1个文件,即index.html或者加个404.htm...

    IIS服务器下做301永久重定向设置方法[图解]

     在网络上看了些教程,再根据自己的实践,也终于搞定了IIS服务器上的301永久重定向设置问题。实现方法如下:  1.新建一个站点,对应目录如E:\wwwroot\301web。该目录下只需要1个文件,即index.html或者加个404.ht

    服务器 IIS 301 重定向 详细设置方法

    服务器 IIS 301 重定向 详细设置方法 301永久重定向

    JAVA实现301永久重定向方法

    本篇文章给大家总结了JAVA中实现永久重定向的方法以及详细代码,对此有需要的朋友可以参考学习下。

    在nuxt中使用路由重定向的实例

    我们都知道,在写SPA的时候,我们可以通过配置vue-router来实现路由的重定向。 官方文档(以及ts类型)的定义中给出了这一选项: interface RouteConfig = { path: string, redirect?: string | Location | ...

    Nginx下WordPress链接(url伪静态)301永久重定向实现方法

    在几个blog程序中折腾的结果,导致url连续二次变化。这是第三次了。 nginx 通过rewrite 使用 permanent; 参数 成301永久url重定向

    消除浏览器的301重定向缓存

    文档讲述了消除301缓存的方法,并举例说明

    windows IIS6服务器全站301永久重定向设置方法

    公司的网站使用了多个域名绑定,导致网站在百度的收录重复,于是要对其进行301跳转。网站使用万网的服务器,安装的是windows系统,整站跳转通过IIS站属性进行

    网站301重定向教程

    网站301重定向教程 重定向说白了就是通过各种的方法将各种网络请求重新定个方向转到其它位置。 如:网页中的重定向

    永久重定向dvjumpdz之asp版

    后,保住流量,使用永久重定向来进行页面的跳转(动网为例) asp 版: 需要同时支持 asp 和 php 的支持. 将压缩包中的文件解压出来放到论坛的根目录即可. 永久重定向dvjumpdz之asp版.zip[(1.57 KB)

    Linux实现301重定向和伪静态方法

    在网上查询了一下还没有人分享linux主机如何通过....使权重重新集中其来,最好的办法就是设置一个主域名,做301永久重定向。假设是带www的域名做主域名,那就把不带www的域名重定向到带www的域名上。 由于新站是用P

    301重定向(php,asp.net,jsp,sap)

    首先第一条就是刚才我们提到的为了seo优化,在如何url网址规范化中也提到,设置301转向后,原来的页面将返回301 HTTP 状态码给浏览器或者搜索引擎,告知搜索引擎次页面已经永久重定向到了新的网页上,spider就不会...

    iis下设置301 Redirect 永久重定向的方法

    iis下设置301 Redirect 永久重定向的方法

    Windows虚拟主机与VPS如何实现301重定向(asp.net)

    卢松松在他的《详解301永久重定向实现方法》一文中介绍了多种实现301重定向的方法,但里面的方法对于使用Windows虚拟主机或是Windows VPS的朋友来说,除了单个页面设置重定向可以用上,IIS 服务器实现整站301重定向...

    TCP-HTTP-操作系统.pdf

    301永久重定向,302临时重定向 304资源为修改,读取缓存 4xx:客户端错误,服务器无法处理 403服务器禁止访问 404资源没有在服务器找到 5xx:服务器处理请求发生错误 501客户端请求功能还不支持 502服务器网关出错 ...

    php header功能的使用

    // 301 永久重定向,记得在后面要加重定向地址 Location:$urlheader(‘HTTP/1.1 301 Moved Permanently’);// 重定向,其实就是302 暂时重定向header(‘Location: http://www.maiyoule.com/’);// 设置页面304 没有...

    网站化化的步骤与方法是怎样的

    搜索引擎一般会把www的网址和不带www网址当做两个不同的网站,这是需要我们通过IIS服务器设置301永久重定向,当然有些服务器并不是iis或者空间并不支持301重定向,这是我们可以采用绝对地址避免收录不带www的网址,...

    apache+php完美解决301重定向的两种方法

    同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响。关于301重定向的更多内容,大家不妨Google一下。本文只介绍实现方法啦! 301重定向的实现,我以前也写过一篇相关的...

Global site tag (gtag.js) - Google Analytics