301永久性转向是SEO常用的一个手段,是搜索引擎认可的一种转向手段,搜索引擎可以肯定原网页永久的改变位置或不存在了,把新网页当作唯一有效的网页,最重要的是还可以将原网页的权重转到新的网页上来。对不同的环境可以用不同的手段实现301转向,如Apache 的可以用.htaccess、Unix系统可以用Redirect指令、IIS服务器管理员可以直接在IIS里设置301永久性转向、动态网页(如ASP/PHP)可以用代码实现,那么IIS环境下无管理员权限也就是说虚拟主机的情况下如何为HTML文件设置301永久性转向呢?办法只有一个:用ISAPI_Rrwrite。下面以实例说明如何用ISAPI_Rewrite为HTML文档设置301永久性转向。
ISAPI Rewrite 是 IIS 下使用最广泛的 Rewrite 组件,有了这个组件就可以实现基本如 Apache 中 mod_rewrite 的功能,大部分的虚拟主机都支持该组件。
注意:本文列出的代码中包含了2.x与3.x版本2种规则,在你使用时务必确认自己使用的版本,否则是无法工作的。
# For ISAPI_Rewrite 2.x
RewriteCond Host: ^jonyera\.com$
RewriteRule (.*) http\://www\.dimihui\.com$1 [I,RP]
# For ISAPI_Rewrite 3.x
RewriteCond %{HTTP:Host} ^dimihui\.com$
RewriteRule (.*) http\://www\.dimihui\.com$1 [NC,R=301]同样我们可以将www.L246.com转向到www.dimihui.com,道理是一样的,我们只需要对规则进行简单的修改就可以了。
# For ISAPI_Rewrite 2.x
RewriteCond Host: ^www\.jonyera\.com$
RewriteRule (.*) http\://www\.dimihui\.com$1 [I,RP]
# For ISAPI_Rewrite 3.x
RewriteCond %{HTTP:Host} ^www.\jonyera\.com$
RewriteRule (.*) http\://www\.dimihui\.com$1 [NC,R=301]整个域名下的文件访问都将被重定向,而不仅仅是首页而已!
注释:在规则最后有[I,RP]标记,通过查阅ISAPI Rewrite 2官方使用手册我们知道,I表示忽略大小写,RP表示使用301转向
页面间的301转向
当我们改变了某些页面的地址,但是又不想损失流量,就应该使用301转向,将原来的URL重定向到新的URL上,这样搜索引擎会知道页面地址变更,而不会以为这个页面出错消失了。
规则如下:
# For ISAPI_Rewrite 2.x
RewriteRule ^/oldpage.htm$
http://www.dimihui.com/index.htm
[I,O,RP,L]
# For ISAPI_Rewrite 3.x
RewriteRule ^/oldpage.htm$
http://www.dimihui.com/index.htm
[NC,L,R=301,O]我们将根目录下的oldpage.htm使用301转向重定向到了
http://www.dimihui.com/index.htm
,当然,我们也可以自己指定任意目的地址,可以是站内的(同样以/pagename的形式)或站点外的(以
http://
开头的URL形式)。
注释:这里出现的O表示对URL进行标准化,可能是用来处理Unicode编码的地址(例如包含中文的URL)以及QueryString的内容,这里我没有测试过。而L表示Last Rule,最后一条规则,也就是后面的重写规则对他不起作用,防止被其他匹配的规则再次重写而造成混乱。
最后说明一下:本文所使用的RewriteRule(重写规则)仅适合ISAPI Rewrite 2.x以及3.x版本,因为标识符(比如[I,RP])在2.0以前版本是不支持的,会在httpd.parse.errors中提示错误。
而如果你使用的是ISAPI Rewrite 3.0以后的版本,那么2.x的规则是不兼容的,不过3.0版本提供了一个规则转换器,我们可以直接将2.0的规则导入,它会自动转换成3.0版本的规则。