`

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

分享到:
评论

相关推荐

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

    ### Nginx下WordPress链接(url伪静态)301永久重定向实现方法知识点 #### Nginx重定向简介 Nginx是一个高性能的HTTP和反向代理服务器,也支持IMAP/POP3/SMTP服务。在网站迁移或URL结构调整时,经常需要使用Nginx的...

    JAVA实现301永久重定向方法

    本文将详细介绍如何在Java环境中实现301永久重定向。 首先,我们需要了解在Java Servlet中处理HTTP响应的核心接口`HttpServletResponse`。这个接口提供了设置状态码和头信息的方法,用于构建HTTP响应。301重定向...

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

    301永久重定向是网站优化中一项重要的技术手段,它告诉搜索引擎某个URL已永久移动到新的位置,帮助保持网站的搜索引擎优化(SEO)效果,传递网站权重,并改善用户体验。301重定向可以将不带www的域名永久性地重定向...

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

    特别是对于使用Windows IIS6(Internet Information Services 6)作为服务器软件的企业,本文将详细介绍如何在windows IIS6服务器上设置全站的301永久重定向。 首先需要了解的是,301永久重定向是一种服务器状态码...

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

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

    301重定向(nginx和Apache)

    - `RewriteRule ^(.*)$ http://www.baozifa.com/$1 [R=301,L]`:将所有请求重定向至`http://www.baozifa.com/$1`,其中`$1`捕获了原始URL路径中的内容,`[R=301]`标志表明这是一个301永久重定向。 - `RewriteRule ...

    IIS7 301重定向配置

    `部分指定了新的URL和重定向类型(301永久重定向)。 3. **应用配置** 保存web.config文件后,IIS7会自动应用这些配置。现在,每当有请求匹配到`old-url-pattern`,服务器就会返回301状态码,并引导客户端(如...

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

    HTTP协议中,301状态码表示永久重定向,也就是说,浏览器会将原来URL永久地重定向到新的URL。这个过程中,浏览器会将重定向的结果缓存在缓存中,以便加快网页的加载速度。 问题的出现原因 问题的出现原因是由于...

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

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

    urlrewritefilter-4.0.3.jar 实现网站伪静态301重定向

    `UrlRewriteFilter` 是一个基于Java的URL重写工具,适用于Tomcat等Servlet容器,能够帮助开发者实现复杂的URL转换规则,包括301永久重定向。在本文中,我们将详细探讨`UrlRewriteFilter-4.0.3.jar`的使用方法、原理...

    301重定向301重定向301重定向

    最后,虽然301重定向是永久性的,但有时仍需要撤销或调整,因此应保留旧网站的备份,以便于后期调整。 在实际操作中,还可以借助一些工具来检查和管理301重定向,例如Google Search Console、SEMrush等。这些工具...

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

    5. 勾选"资源的永久重定向"和"将查询字符串附加到目标URL"。这两个选项确保了旧URL的所有参数都能正确地传递到新URL,并且通知浏览器和搜索引擎这是一个永久性转移。 6. 如果你的旧URL结构与新URL结构完全不同,...

    永久重定向.sh

    永久重定向

    网站301重定向教程

    网站301重定向是一种重要的SEO(搜索引擎优化)和网站管理技术,用于将一个URL(统一资源定位符)永久地转移到另一个URL。这种技术在多种情况下都非常有用,比如当网站改版、域名更换或者URL结构调整时。了解并正确...

    java实现301跳转和重定向的方法

    301永久重定向(Moved Permanently): 301状态码表示源URL已经永久性地转移到了新的URL。这种重定向适用于网页内容搬家,搜索引擎优化(SEO),或者希望用户和爬虫记住新的URL的情况。使用301重定向可以保留原有的...

    request和response实现跳转和重定向的区别

    请求重定向是通过`Response`对象来实现的,服务器在收到请求后,会返回一个状态码3xx(如301永久重定向,302临时重定向),并在响应头中设置`Location`字段,指示客户端应该去新的URL获取资源。浏览器接收到这样的...

    nginx 301 302重定向跳转配置.docx

    Nginx 301 跳转设置是永久性重定向,它将浏览器的 URL 地址永久地重定向到新的 URL 地址。例如: ``` server { listen 80; server_name downcc.com; rewrite ^/(.*) http://.downcc.com/$1 permanent; access_...

    301重定向的设置方法

    301重定向是一种永久性的重定向,它告诉浏览器和搜索引擎当前页面已永久性移动到新位置。通过这种方式,可以确保用户和搜索引擎能够顺利地找到新的URL,同时保留原有的排名优势和链接价值。 #### 二、301重定向的...

Global site tag (gtag.js) - Google Analytics