标题：301重定向
域名定向
路由选择的变化也是对数据报文经由路径的一种重定向。
在我们网站建设中，时常会遇到需要网页重定向的情况：像网站调整，改变了网站的目录结构，网页被移到一个新地址。或者网页扩展名改变，如因应用需要把.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对BMW德国网站的惩罚。即使网站客观上不是spam，也很容易被搜寻引擎误判为spam而遭到惩罚。
meta fresh： 这在2000年前比较流行，它具体是通过网页中的meta指令，在特定时间后重定向到新的网页，如果延迟的时间太短(约5秒之内)，会被判断为spam。IIS服务器实现301重定向* 打开internet信息服务管理器，在欲重定向的网页或目录上按右键  IIS6.0上面301重定向图，选择“重定向到URL”，
* 此处以重定向到百度为例
* 在“重定向到”输入框中输入要跳转到的目标网页的URL地址
* 选中“资源的永久重定向”（切记）
* 最后点击“应用”Apache服务器实现301重定向相比较来说，Apache实现起来要比IIS简单多了。在Apache中，有个很重要的文件.htaccess，通过对它的设置，可以实现很多强大的功能，301重定向只是其中之一。
redirect permanent /index.php http://www/index.php?go=category_6(将网页index.php重定向到http://www./index.php?go=category_6)
通过合理地配置重定向参数中的正则表达式，可以实现更复杂的匹配。有兴趣的朋友可参考本站Apache手册。PHP下的301重定向<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www" );
exit;
?>
<html>
<head>
<title>HTTP/1.1 301 Moved Permanently</title>
</head>
<body>
HTTP/1.1 301 Moved Permanently
</body>
</html>ASP下的301重定向<%@ Language=VBScript %>
<%
Status="301 Moved Permanently"
AddHeader "Location","http://"
%>ASP .NET下的301重定向<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Status = "301 Moved Permanently";
AddHeader ("Location","http://www);
}
</script>ColdFusion下的301重定向<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.">　旧域名重定向到新域名
创建一个.htaccess文件，并将下面提供的代码写入文件内，它可以确保旧域名所有的目录或者网页正确的跳转到新域名内。
记住.htaccess文件一定要放在旧网站的根目录下，并且新网站要和旧网站保持相同的目录结构及网页文件。
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www/$1 [R=301,L]
请将上面的wwwdomaincom修改成你想要跳转到的域名。
此外，我建议大家归总旧网站的外部链接，并联系相应的站点修改导入链链的URL，以指向新站点。
注意：.htaccess文件只有在使用安装有Mod Rewrite模块的Apache作为WEB服务器的Linux主机上才能起作用。域名301重定向到www的二级域名首先要知道，www.是domaincom域下的一个二级域名。
301跳转到www二级域的实现方式：
创建一个.htaccess文件，并将下面提供的代码写入文件内，它可以确保所有来自对domaincom的请求都转向到对www进行请求。记住.htaccess文件一定要放在旧网站的根目录下，并且新网站要和旧网站保持相同的目录结构及网页文件。
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^ [NC]
RewriteRule ^(.*)$ http://www./$1 [L,R=301]
请将上面的domaincom修改成你想要跳转到的域名。
注意：.htaccess文件只有在使用安装有Mod Rewrite模块的Apache作为WEB服务器的Linux主机上才能起作用。ASP下使用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="^$" />
</conditions>
<action type="Redirect" url="http://www/{R:0}"
redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
将此web.config上传到网站根目录即可。别忘了把上面的domaincom换成你的域名哦！
前提条件是：window主机的IIS版本必须是7.0或以上的。在博客中设置301的方法这里以Z-Blog为例详细介绍一下：
复制如下代码，将代码中”改成你自己的网址。
if request.ServerVariables("SERVER_NAME")" then
Status="301 Moved Permanently"
AddHeader "Location", ""
End
end if
进入Z-Blog后台，打开“文件管理”界面。
找到并打开网站根目录下的 default.asp 文件。
将以上代码加进 default.asp 在下图中红框所示位置。
5. 最后确定无误点击——提交——保存。
  301永久重定向
检测工具
301重定向是在搜索引擎优化中一个很常用的操作，可以帮助我们转移域名的权重。但是在做301重定向的时候由于服务器系统、网站程序语言、域名和链接地址的不同，使用的方法也不同。这个时候我们就要使用301重定向检测工具，来检测我们的301重定向是否成功。
HttpWatch检测工具
HttpWatch是强大的网页数据分析工具，集成在Internet Explorer工具栏。包括网页摘要、Cookies管理、缓存管理、消息头发送/接受、字符查询、报告输出、POST 数据和目录管理功能。
在IE工具栏中 查看——浏览器栏——httpwatch 打开，也可以使用快捷键shift+F2打开。
状态为：301状态 从demo1.php 成功301跳转到demo9.php ，验证301重定向设置成功。
Chinaz站长工具
chinaz站长工具是业内有名的站长工具。其功能非常丰富，点击http状态码查询，输入网址，可以查询出网站的http状态码，确保是301而不是302.
运作流程
网站服务器响应网页浏览请求的运作流程
让我们先来了解一下用户/搜索引擎和网站一开始的交互流程。当用户或搜索引擎向一个网站服务器发出网页浏览请求时，该服务器将：
通过域名服务器(DNS)将域名转换为网站的IP地址，然后返回给客户；
打开一个该IP套接口连接；
记下通过该套接口的一个HTTP数据流；
从WEB服务器接收一个响应请求的HTTP数据流。该数据流包含状态码，状态码的值由HTTP协议所决定。这里所说的“HTTP数据流”信息也叫“头信息(Header)”。头信息中包括了日期，服务器类型，通常还会有一条“200 OK”信息。如果一切良好，那么网络服务器就会将“200 OK”信息以及请求页面发送出去。如果网站在这时候已经建立了重定向，那么服务器就会在头信息中包含一个“302 Moved Temporarily”或“301 Moved Permanent”之类的响应信息。搜索引擎会根据服务器头信息中的内容作出决定。

注意事项
若准备将服务器上的文件移到其它地方时，须就以下信息正确地通知搜索引擎的爬行程序：
- 目标地址：这些文件被移向何方
- 移动属性：暂时移走还是永久性移走
对拥有多个域名的网站，专家建议应把那些不想在搜索引擎上推广的域名用301跳转命令来永久性重定向。

正确方法
对于正确实施301重定向，有这样几个方法可供大家参考：
在.htaccess文件中增加301重定向指令。
适用于使用Unix网络服务器的用户。通过此指令通知搜索引擎的spider你的站点文件不在此地址下，这是较为常用的办法。形如：Redirect 301 / url。
适用于使用Window网络服务器的用户。在服务器软件的系统管理员配置区完成301重定向。
采用“mod_rewrite”技术。
通过该技术进行的改变将在.htaccess文件中体现出来，形如：
Options +FollowSymLinks
RewriteEngine on
RewriteCond % ^yourdomaincom
RewriteRule ^(.*)$ http://www./$1 [R=permanent,L]
用ASP/PHP实现301重定向：
代码在上面已经介绍过了。
看法建议
体会
对于所遭遇的问题Dan Thies深有体会，因为他也有过类似的遭遇。他的网站上有一个会员跟踪脚本，其中一个会员的站点通过302命令映射到这个跟踪脚本，而这个跟踪脚本又是通过302映射到他的主页。当在Google中用“keyword research”进行搜索，他的主页排名在前十位，然而地址显示的却是那个会员的网址。结果使他哭笑不得：访问者通过Google搜索结果进入他的网站，而他却不得不为这些访问量给那个会员支付报酬! 后来他用robots.txt文件禁止Spiders跟踪访问他的会员跟踪脚本才算解决了问题。
对于Dan Thies认为：“Google在302重定向"的处理上还存在一定的问题，但并不表示Google不允许302重定向。并未遭封或遭到惩罚，它们只是返回了错误的响应。”
如果使用了跟踪URL/脚本，又必须让访问者重定向到某一着陆页，那么一定要在robots.txt文件中禁止Spiders去访问第二个重定向。如果没有对跟踪URL/脚本进行重定向，而只是把另外一个URL上的内容给复制过来，那么应在robots.txt文件中禁止Spiders去访问跟踪URL，以防因内容重复而遭搜索引擎惩罚。
经验谈
一个多域名站主的经验之谈：
“我只有一个网站淘星，主域名是，此外还有诸如等共计十几个域名。所有这些次级域名都映射到，而且所有域名对应的是同一个IP地址。由于事实上我只有一个站点，一个站点又只能对应一个.htaccess文件，显然不可能直接修改.htaccess文件来实现重定向。我采用了如下步骤：
把domain1com从domaincom上独立出来，让它成为服务器上的一个普通独立网站。
为domain1com创建一个.htaccess文本文件，并在文件中设置重定向代码为：
Redirect permanent /
再将修改后的.htaccess文件上传给所在服务器。
这一步也可以在域名控制面板中完成。
进入域名控制面板，将所有原来绑定到上的域名从上释放，然后重新绑定到。这样一来，这些被绑定的域名使用的都是的.htaccess文件，因而也就意味着它们都被永久性重定向到上了。好了，大功告成! 就这么容易!
重定向有一个更快捷的办法,但是如果你的网站租用的是虚拟主机的话,需要空间商支持的,如果是服务器那就好办了,打开IIS,在默认站点（或者不是默认站点也可以）建立一个新网站,记得域名和IP要填对,比如你要把重定向到w的主域名或者不带3w的一级域名中,你记得这个net的对应绑定的IP一定要选对,然后下一步就随便选定一个文件夹 其他都不要管 建立好了之后 按如下图片所示操作即可。
  1.zhaohaosf.net重定向设置参考图
记得一定要勾选“资源的永久重定向”,否则会被搜索引擎视为302暂时性跳转处理
然后你就成功了，如果出现下图所示的话，那就真的成功了哦亲！
  
优化意义
1、网站改版完成，先将新版上线，在线上保持一段时间新旧内容共存。
2、新旧内容同时存在一段时间，且新版内容已开始收录后，对新旧内容设置301跳转，将旧版内容指向新版对应内容。
3、301重定向有利于网站首先域的确定，对于同一资源页面多条路径的301重定向有助于URL权重的集中。
按照上述操作方式在现有情况下能够尽可能的降低网站因改版带来的流量损失，提高用户体验度，同时有利于网站优化。