LYWILL设计运营 - 网站运营与推广、开发技术、成功项目展示。

url重写之301重定向

之前看到有的网站访问时不加www可以自动转到加www的地址,一直不清楚是通过什么方式,今天终于让我找到了一份详细的资料。

域名的重定向
  

 

  在我们网站建设中,时常会遇到需要网页重定向的情况:像网站调整,如改变网页目录结构,网页被移到一个新地址,再或者,网页扩展名改变,如因应用需要把.php改成.Html或.shtml,在这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户还会得到一个404页面错误信息,访问流量白白丧失;再如某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点,等等。

 

 

重定向方式

  常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh:

 

  301 redirect: 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。

 

  302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,像Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。

 

  meta fresh: 这在2000年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之内),会被判断为spam。

 

  IIS服务器实现301重定向

 

  * 打开internet信息服务管理器,在欲重定向的网页或目录上按右键

    * 选择“重定向到URL”

 

  * 此处以重定向到百度为例

 

  * 在“重定向到”输入框中输入要跳转到的目标网页的URL地址

 

  * 选中“资源的永久重定向”(切记)

 

  * 最后点击“应用”

 

  Apache服务器实现301重定向

 

  相比较来说,Apache实现起来要比IIS简单多了。在Apache中,有个很重要的文件.htaccess,通过对它的设置,可以实现很多强大的功能,301重定向只是其中之一。

 

  redirect permanent /index.php http://www.domain.com/index.php?go=category_6(将网页index.php重定向到http://www.domain.com/index.php?go=category_6)

 

  通过合理地配置重定向参数中的正则表达式,可以实现更复杂的匹配。有兴趣的朋友可参考本站Apache手册。

 

  PHP下的301重定向

 

  <html>

 

  <head>

 

  <title>HTTP/1.1 301 Moved Permanently</title>

 

  <?

 

  Header( "HTTP/1.1 301 Moved Permanently" );

 

  Header( "Location: www.domain.com" );

 

  ?>

 

  </head>

 

  <body>

 

  HTTP/1.1 301 Moved Permanently

 

  </body>

 

  </html>

 

  ASP下的301重定向

 

  <%@ Language=VBScript %>

 

  <%

 

  Response.Status="301 Moved Permanently"

 

  Response.AddHeader "Location","http://www.domain.com"

 

  %>

 

  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.domain.com");

 

  }

 

  </script>

  此外,我建议大家归总旧网站的外部链接,并联系相应的站点修改导入链链的URL,以指向新站点。

 

  注意:.htaccess文件只有在使用安装有Mod Rewrite模块的Apache作为WEB服务器的Linux主机上才能起作用

 

  域名301重定向到www的二级域名

 

  在以前的文章中我反复提及过:www.domain.com是domain.com域下的一个二级域名,并对二级域名和一级目录之间如何选择以及网站结构优化做了一个详细的分析,有兴趣的可以读以下两篇文章,网站结构优化是SEO中最重要。  

 
  ASP.NET下使用web.config来实现301重定向
 

  如果网站根目录没有web.config就新建一个文本文档,保存成web.config即可,代码如下:

 

  <configuration>

 

  <system.webServer>

 

  <rewrite>

 

  <rules>

 

  <rule name="WWW Redirect" stopProcessing="true">

 

  <match url=".*" />

 

  <conditions>

 

  <add input="{HTTP_HOST}" pattern="^domain.com$" />

 

  </conditions>

 

  <action type="Redirect" url="http://www.domain.com/{R:0}"

 

  redirectType="Permanent" />

 

  </rule>

 

  </rules>

 

  </rewrite>

 

  </system.webServer>

 

  </configuration>

 

  将此web.config上传到网站根目录即可。别忘了把上面的domain.com换成你的域名哦!

 

  前提条件是:window主机的IIS版本必须是7.0或以上的。

 

  在博客中设置301的方法

 

  这边以Z-Blog为例详细介绍一下:

 

  1.复制如下代码,将代码中“###.com”改成你自己的网址即可。

 

  if request.ServerVariables("SERVER_NAME")="###.com" then

 

  Response.Status="301 Moved Permanently"

 

  Response.AddHeader "Location", "http://www.###.com"

 

  Response.End

 

  end if

 

  2.进入Z-Blog后台,打开“文件管理”界面。

 

  3.找到并打开网站根目录下的 default.asp 文件。

 

  4.将以上代码加进 default.asp 。   

 

网站重定向的注意事项

  1.若准备将服务器上的文件移到其它地方时,须就以下信息正确地通知搜索引擎的爬行程序:

 

  - 目标地址:这些文件被移向何方

 

  - 移动属性:暂时移走还是永久性移走

 

  2.对拥有多个域名的网站,专家建议应把那些不想在搜索引擎上推广的域名用301跳转命令来永久性重定向。

 

确保网站实施了正确的301重定向

  对于正确实施301重定向,有这样几个方法可供大家参考:

 

  1.在.htaccess文件中增加301重定向指令

 

  2.适用于使用Unix网络服务器的用户。通过此指令通知搜索引擎的spider你的站点文件不在此地址下。这是较为常用的办法。形如:Redirect 301 / http://www.yourdomain.com/

 

  3.在服务器软件的系统管理员配置区完成301重定向

 

  适用于使用Window网络服务器的用户

 

  4.采用“mod_rewrite”技术

 

  通过该技术进行的改变将在.htaccess文件中体现出来,形如:

 

  Options +FollowSymLinks

 

  RewriteEngine on

 

  RewriteCond % ^yourdomain.com

 

  RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=permanent,L]

 

  5.用ASP/PHP实现301重定向:

 

  代码在上面已经介绍过了

 

资深SEO专家Dan Thies的看法和建议

Dan Thies体会

  对于Business.com所遭遇的问题Dan Thies深有体会,因为他也有过类似的遭遇。他的网站上有一个会员跟踪脚本,其中一个会员的站点通过302命令映射到这个跟踪脚本,而这个跟踪脚本又是通过302映射到他的主页。当在Google中用“keyword research”进行搜索,他的主页排名在前十位,然而地址显示的却是那个会员的网址。结果使他哭笑不得:访问者通过Google搜索结果进入他的网站,而他却不得不为这些访问量给那个会员支付报酬! 后来他用robots.txt文件禁止Spiders跟踪访问他的会员跟踪脚本才算解决了问题。

 

  对于Business.com,Dan Thies认为:“目前Google在302重定向"的处理上还存在一定的问题,但并不表示Google不允许302重定向。Business.com并未遭封或遭到惩罚,它们只是返回了错误的响应。”

Dan Thies建议

  如果使用了跟踪URL/脚本,又必须让访问者重定向到某一着陆页,那么一定要在robots.txt文件中禁止Spiders去访问第二个重定向。如果没有对跟踪URL/脚本进行重定向,而只是把另外一个URL上的内容给复制过来,那么应在robots.txt文件中禁止Spiders去访问跟踪URL,以防因内容重复而遭搜索引擎惩罚。

 

301重定向经验谈

  一个多域名站主的经验之谈:

 

  “我只有一个网站淘星,主域名是www.domain.com,此外还有诸如domain1.com、domain2.com、domain3.com等共计十几个域名。所有这些次级域名都映射到www.domain.com,而且所有域名对应的是同一个IP地址。由于事实上我只有一个站点,一个站点又只能对应一个.htaccess文件,显然不可能直接修改.htaccess文件来实现重定向。我采用了如下步骤:

 

  A.把domain1.com从domain.com上独立出来,让它成为服务器上的一个普通独立网站。

 

  B.为domain1.com创建一个.htaccess文本文件,并在文件中设置重定向代码为:

 

  Redirect permanent / http://www.domain.com/

 

  再将修改后的.htaccess文件上传给domain1.com所在服务器。

 

  这一步也可以在域名控制面板中完成。

 

  C.进入域名控制面板,将所有原来绑定到domain.com上的域名从domain.com上释放,然后重新绑定到doamin1.com。这样一来,这些被绑定的域名使用的都是domain1.com的.htaccess文件,因而也就意味着它们都被永久性重定向到domain.com上了。