标题：301永久重定向
概念
页面永久性移走（301重定向）是一种非常重要的“自动转向”技术。网址重定向最为可行的一种办法。当用户或搜索引擎向网站服务器发出浏览请求时，服务器返回的HTTP数据流中头信息(header)中的状态码的一种，表示本网页永久性转移到另一个地址。
重定向
301永久重定向：这是SEO中的一个基础名词，在URL规范化中会用到，也许大家都知道这个名词，但是由于应用的不是非常频繁，导致很多专业做SEO的朋友都不是很熟悉301永久重定向的具体操作方法，今天我就讲解下301永久重定向的理论，以及实际的操作方法
作用
301永久重定向是所有的重定向方法中唯一符合搜索引擎规则的重定向方法，其他的重定向还包括302暂时重定向和JS跳转等，这些方式都容易导致URL不规范问题的产生。所以说如果你有多个域名都希望可以让他们访问同一个网站，那就只能将其中一个做为主域名，剩下的其他域名做301永久重定向到这个主域名，只有这样才可以完美的让多个域名都访问一个站点，不会产生重复收录，导致网站被惩罚的现象
执行方法
301永久重定向有几种不同的做法，在windows主机上和Unix/Linux主机是不同的。一、在windows主机上设置的方法可以在IIS服务器上设置也可以在代码中设置。
1、在IIS服务器上设置301的方法
这种设置方法需要有一个先天条件，那就是你有服务器的管理权，你可以直接操作IIS服务器，并且可以随意开通新的虚拟主机，否则你只能用修改网站代码的方法。 版权申明：本站文章均来自网络,本站所有转载文章言论不代表本站观点
首先开通一个新的虚拟主机，将你需要做301永久重定向的域名正常与该空间绑定，这个绑定的方法你可以咨询服务器托管商。
然后打开“控制面板”→找到“管理工具”→打开“Internet 信息服务”。打开后，可以在管理器左侧树形菜单中找到你的网站，然后右击选择“属性”，打开网站的属性管理面板(如下图)，并且选择到“主目录”选项卡，选择“重定向到URL”，然后在地址框中输入“主域名”，然后将选项卡中的“资源的永久重定向”选择上，点击确定即可设置完毕。
2、在网站代码中设置301的方法
只需要将以下代码加在网页的开头即可，不过只能用在ASP和PHP文件中，HTML目前无法通过代码设置301。
ASP代码： !
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently" Response.AddHeader "Location" , " http://www.###.com"
%>
PHP代码：
<?
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.###.com” );
?>
注：将我的网址替换成你自己的定向后的目标网址即可，所有的标点必须用英文半角。
3、在博客中设置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 在下图中红框所示位置。 
  301永久重定向5.最后确定无误点击 提交 保存。二、在Unix/Linux主机上设置的方法可以用.htaccess文件
1. Apache模块 mod_alias的 Redirect 和 RedirectMatch命令
上面提到2个命令使用方法相似。而区别就是后者RedirectMatch基于正则表达式匹配对当前的URL发送一个外部重定向语法为：
Redirect [status] URL-path URL
RedirectMatch [status] regex URL
status参数可以使用以下HTTP状态码：
permanent
返回一个永久性重定向状态码（301），表示此资源的位置变动是永久性的。
temp
返回一个临时性重定向状态码（302），这是默认值。
seeother
返回一个“参见”状态码（303），表示此资源已经被替代。
gone
返回一个“已废弃”状态码（410），表示此资源已经被永久性地删除了。如果指定了这个状态码，则URL参数将被忽略。
举例：
APACHE
Redirect 301 /old/old.htm http://www.###.com/new.htmRedirect permanent /one http://###.com/twoRedirectMatch 301 (.*).gif$ http://www.###.com/images/$1.jpg
2.使用mod_rewrite重写URL方式
APACHE
Options +FollowSymLinksRewriteEngine onRewriteCond %{HTTP_HOST} ^####.comRewriteRule ^(.*)$ http://www.###.com/$1 [R=permanent,L]
在这里判断当前服务器变量HTTP_HOST是否等于###.com，为真就进行重写，按照R=permanent进行永久重定向，L表示并立即停止重写操作，并不再应用其他重写规则
下面是最终实现的.htaccess文件，同时也并入wordpress重写规则。
APACHE
# BEGIN WordPress<IfModule mod_rewrite.c>RewriteEngine On#RedirectOptions +FollowSymLinksRewriteCond %{HTTP_HOST} ^###.com$RewriteCond %{HTTP_HOST} !^$RewriteRule ^(.*)$ http://www.###.com/$1 [R=301,L]#Rewrite(blog)RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^blog/.* /blog/index.php [L]RewriteRule . -</IfModule># END WordPress

运作流程
让我们先来了解一下用户/搜索引擎和网站一开始的交互流程。当用户或搜索引擎向一个网站服务器发出网页浏览请求时，该服务器将： 
1.通过域名服务器(DNS)将域名转换为网站的IP地址，然后返回给客户 
2.打开一个该IP套接口连接 
3.记下通过该套接口的一个HTTP数据流 
4.从WEB服务器接收一个响应请求的HTTP数据流。该数据流包含状态码，状态码的值由HTTP协议所决定。这里所说的“HTTP数据流”信息也叫“头信息(Header)”。头信息中包括了日期，服务器类型，通常还会有一条“200 OK”信息。如果一切良好，那么网络服务器就会将“200 OK”信息以及请求页面发送出去。如果网站在这时候已经建立了重定向，那么服务器就会在头信息中包含一个“302 Moved Temporarily”或“301 Moved Permanent”之类的响应信息。搜索引擎会根据服务器头信息中的内容作出决定。