不同环境下网站进行301重定向的方法

所谓301永久重定向(或叫301转向,301跳转),是指当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。
301永久重定向有何作用?在哪些情况下适用?
从 301永久重定向的定义可以看出,它是一种状态码,会向搜索引擎或浏览器发出信息:本网页的地址已经永久改变了。并会把新的地址传达过去。而相应的就是:我们输入网址A访问,显示出来的是转向后的网址B,转向过程极短以至无法察觉。所以,301永久重定向对于访客来说,作用就是将他要访问的而实际上已不存在的网址转到另一个网址,避免出现“此网页无法显示”之类的错误;对于搜索引擎优化|SEO来说,给搜索引擎一个友好的信息,告诉它此页面已永久重定向,避免搜索引擎找不到页面。这对于网站的SEO是很重要的,因为301永久重定向对SEO无任何不好的影响!而且网页A的关键词排名和PR级别都会传达给网页B!



这里我要解决两问题:
1、将timmy.min-min.com/***的访问都转向imtimmy.com/*** 。
2、将www.imtmmy.com/***的访问都转向imtimmy.com/*** (前面说了,越短越好嘛)。


为解决问题1,我需要在老域名timmy.min-min.com的根目录的.htaccess里填入以下代码:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://imtimmy/$1 [L,R=301]


为解决问题2,我需要在新域名imtimmy.com的根目录的.htaccess里填入:

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^www.imtimmy.com [nc]
rewriterule ^(.*)$ http://imtimmy.com/$1 [R=301,nc]


具体的规则可以自己google “.htaccess文件语法”。

下面再附上一些常用的301转向规则:

1、ASP下的301转向代码
<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://imtimmy.com/”
%>


2、ASP.Net下的301转向代码



3、PHP下的301转向代码
header(”HTTP/1.1 301 Moved Permanently”);
header(”Location: http://imtimmy.com/”);
exit();


4、CGI Perl下的301转向代码
$q = new CGI;
print $q->redirect(”http://imtimmy.com/”);


5、JSP下的301转向代码
<%
response.setStatus(301);
response.setHeader( “Location”, “http://imtimmy.com/” );
response.setHeader( “Connection”, “close” );
%>


6、Apache下301转向代码

新建.htaccess文件,输入下列内容(需要开启mod_rewrite):

1)将不带WWW的域名转向到带WWW的域名下
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^imtimmy.com [NC]
RewriteRule ^(.*)$ http://www.imtimmy.com/$1 [L,R=301]


2)将不带WWW的域名转向到带WWW的域名下
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^www.imtimmy.com [nc]
rewriterule ^(.*)$ http://imtimmy.com/$1 [R=301,nc]


3)重定向到新域名
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://imtimmy.com/$1 [L,R=301]


4)使用正则进行301转向,实现伪静态
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+).html$ news.php?id=$1

将news.php?id=123这样的地址转向到news-123.html

转载自Timmy's Blog

有话要说