301 Redirect/301重定向实现方法总结!


老许说301定向

自己经常在网络翻阅一些牛人的牛博,不过不得不说这类牛人都有一个特点—特点基本上都是技术牛,然后会有很多的FANS跟着跑,老许经常就羡慕的不行不行的,不过自己没那本事也怪不得别人,这次因为公司域名不适合做品牌推广,在鄙人的多次建议之后决定更换网站域名,域名更换过程则理所当然的由我负责,查阅了一些资料,我将自己总结出来的一些方法,分享出来,希望能够帮到有需要的兄弟,也难得的写一次技术性的东西!

先来分析一下几种常见的转向各有什么特点,有什么区别:

meta fresh:早起用的比较早,直接在旧的网页代码中写入一段新的代码,让Visitors在访问该页面的时候直接跳转到新的页面,这种方法的优点在于可以自由指定跳转的时间,也就是说你可以设置在原来的页面停留多久之后跳转到新的页面,而且可以在原来的页面中作出说明等,加深访客的印象,不过这种方法在现在已经使用的很少了,一个是这种方法在web2.0的时代看来的确是out了,另外这种方法变动性太大,跳转的时间短还会被搜索引擎认为是在作弊!

301redirect:301重定向,是我们今天这篇文章的主题,也是目前使用的最广泛的方法,在SEO界,几乎是被公认的更换域名必取的方法,301重定向的含义是永久性重定向,明确表示你已经把所有业务转移到了新网站上,原来的域名基本上可以说是完全放弃,搜索引擎在识别301定向之后会将原来网站的收录和权重等全部转移到新的网站上,Google使用效果很明显,国内主流搜索引擎百度目前仍然不能够很好的识别,一般来说等待的时间都在两个月以上,不过如果是要做长期的转移,那么第一选择还是毫无疑问的是301!

302redirect:与上边的301重定向相对比,302重定向的含义是暂时性的重定向,也就是说你使用这种方法,那么你实际上就是在向搜索引擎表明你的观点:“短期内我还会回来”!不过因为很多SEO前辈们常利用这种特性来作弊,使得现在搜索引擎基本上对待302redirect都认为是直接在作弊!大名鼎鼎的Business.com和BMW德国站都曾因为这个原因受到google的惩罚,尽管他们准确说来并不是作弊!

下边就详细的说一下各种301重定向的实现方法吧!

按照图片中的顺序来写吧!

1.单一URL重定向

   如果你的网站页面不多,或者说百度等搜索引擎收录数量不多,需要传递权重的页面不多,或者你网站的收益全部来自那么几个简单的页面,那么我觉得这种方法也许比较适合你,直接指定原来的页面要301redirect到哪个页面就OK,这种方法基本上很难出现出错的可能!

   实现方法:打开IIS→找到要301的页面→选中,右键→属性→勾选"重定向到URL"→在下边填写要定向到的新页面的URL→选中"资源的永久重定向"【表示是301redirect】→应用

   就这么简单,几步就搞定!

2.通过代码实现301redirect

PHP代码如下:

  1. <? Header( "HTTP/1.1 301 Moved Permanently" );
  2. Header( "Location: http://www.3ak.cn" );?>

ASP代码如下:

  1. <%@ Language=VBScript %>
  2. <% Response.Status=”301 Moved Permanently” Response.AddHeader “Location”, ” http://www.3ak.cn”>

.NET代码如下:

  1. <script runat=”server”>
  2. private void Page_Load(object sender, System.EventArgs e)
  3. {
  4. Response.Status = “301 Moved Permanently”;
  5. Response.AddHeader(”Location”,”http://www.3ak.cn”);
  6. }
  7. </script>

CGI  PERL代码如下:

  1. $q = new CGI;
  2. print $q->redirect("http://www.3ak.cn/");

JSP代码如下:

  1. <%
  2. response.setStatus(301);
  3. response.setHeader( "Location", "http://www.3ak.cn/" );
  4. response.setHeader( "Connection", "close" );
  5. %>

3.APACHE服务器下实现301redirect

   apache服务器下可以修改服务器配置文件而达到这样的效果,但是相对比较复杂,不做推荐,如果有需要的话可以自己百度一下!这里推荐通过设置 .htaccess 文件实现!

单一页面URL重定向:

  1. RewriteRule ^old\.html$ new.html

将原域名重定向到新域名

  1. Options +FollowSymLinks
  2. RewriteEngine on
  3. RewriteRule ^(.*)$ http://www.3ak.cn/$1 [L,R=301]

将不带www的域名重定向到带www的域名上

  1. Options +FollowSymLinks
  2. RewriteEngine on
  3. RewriteCond %{HTTP_HOST} ^lesishu.cn [NC]
  4. RewriteRule ^(.*)$ http://www.3ak.cn/$1 [L,R=301]

.htaccess文件是个很好的东西,做网站SEO过程中已经形成了惯例对动态URL进行伪静态处理,也需要通过这个东西来实现,以上几种虽然分开说,但是实质上大同小异,相信比我熟悉apache和htaccess文件的朋友多得多,大家自己研究一下吧!

4.IIS服务器下的批量页面重定向

前边说了那么多,其实总的说来感觉很麻烦,特别是在网站内容很多,搜索引擎收录达到万以上的时候,要处理好就有些困难,下边我们讲一下网络上很少有人提及的一种IIS服务器环境下批量页面重定向,也是本人这次网站301重定向所采取的方法!

这里我们假设将http://3ak.cn通过301重定向到http://www.3ak.cn【见谅哈,大家把两个当作不同的站点看待就OK了!】

1.在IIS中新建一个站点,绑定原来所使用的域名,这里是http://3ak.cn

2.将http://3ak.cn绑定到这个新建的站点上

2.重复方法1“单页面301重定向”中的操作,右键选中新建的站点→属性→主目录→重定向到→填入http://www.3ak.cn$S$Q【请注意在域名后边直接加上$S$Q,具体意义稍后再说】→勾选“上面输入的准确URL”和“资源的永久重定向”→应用  OK,搞定!

解释一下$S$Q的含义:

$S 是将请求的 URL 的后缀传递给新的 URL。后缀是用重定向的 URL 代替之后,初