ISAPI_Rewrite 各版本301转向大全

 
ISAPI_Rewrite 各版本301转向大全
2016-09-26 19:32:34 /故事大全

终于下定决心放弃之前启用的二级域名,改回子目录格式。经测试改回子目录后,百度收录加快一天收录多次,现在准备把之前的二级域名(google/soso都收录了好几万页)301重定向到子目录下。使用IIS下301转向方法,但问题出现了,发现收录的部分伪静态的页面无法正确重定向,全部重定向首页。

IIS 做伪静态采用的是ISAPI_Rewrite 插件,大家知道ISAPI_Rewrite 不仅可以实现url 重写,还可以用来设置301转向(2.x以上才支持,1.3版本仅支持302转向),下面介绍ISAPI Rewrite做301重定向的方法:

1. 将不带www的顶级域名301重定向到带www的域名

# ISAPI_Rewrite 2.x 版本

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteCond Host: ^downcc.com$

RewriteRule (.*) //wsw.downcc.com$1 [I,RP]

# ISAPI_Rewrite 3.0 版本

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteCond %{HTTP:Host} ^downcc.com$

RewriteRule (.*) //wsw.downcc.com$1 [NC,R=301]

2. 不同域名之间的301转向

# ISAPI_Rewrite 2.x 版本

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteCond %{HTTP:Host} ^downcc.cn$

RewriteRule (.*) //wsw.downcc.com$1 [NC,R=301]

# ISAPI_Rewrite 3.0 版本

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteCond %{HTTP:Host} ^www.downcc.cn$

RewriteRule (.*) //wsw.downcc.com$1 [NC,R=301]

3. 将页面301重定向到另外一个页面

# ISAPI_Rewrite 2.x 版本

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteRule ^/oldpage.html$ //downcc.com/dll.html[I,O,RP,L]

# ISAPI_Rewrite 3.0 版本

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteRule ^/oldpage.html$ //downcc.com/dll.html[NC,L,R=301,O]

注意:ISAPI_Rewrite 1.3是现在国内应用得比较多的一个老版本,它可用于url 重写,但并不适合用来实现真正的301重定向功能。建议下载最新的ISAPI_Rewrite 3.0 版本。ISAPI_Rewrite 1.3 的在IIS下对域名重定向虽然能够顺利跳转,但是返回的仍然是302 HTTP header,而不是301 状态码。而且该段代码用于301重定向后,在子目录中的其他页面都会跳转到首页。

这样设置以后,你的windows iis 也能实现301重定向了,不管是Google 和百度搜索引擎都不会有因为带有www和不带www 的域名而产生重复页面问题了。

301重定向在线检测工具://wsw.itmop.com/tool/getheader.php

附:ISAPI_Rewrite语法规则

ISAPI_Rewrite 规则对大小写敏感,但可以忽略大小写了。

I (ignore case)不管大小写强行指定字符匹配。

例:RewriteRule /code/project/([0-9,a-z]*).html /soft.jsp?softpy=$1 [I]

其他的参数一览

I (ignore case)

不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令。

F (Forbidden)

对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。

L (last rule)

不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写。

N (Next iteration)

强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略。

NS (Next iteration of the same rule)

以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目。

P (force proxy)

强制目的URI在内部强制为代理需求并且立即通过ISAPI扩展应付代理需求,必须确认代理字符串是一个有效的URI包括协议 主机等等否则代理将返回错误。

R (explicit redirect)

强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则。

RP (permanent redirect)

几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码。

U (Unmangle Log)

当URI是源需求而不是重写需求时记载URI。

O (nOrmalize)

在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的。

CL (Case Lower)

小写。

CU (Case Upper)

大写。

RewriteHeader directive

Syntax: RewriteHeader HeaderName Pattern FormatString [Flags]

这个指令是RewriteRule的更概括化变种,它不仅重写URL的客户端需求部分,而且重写HTTP头,这个指令不仅用于重写。生成,删除任何HTTP头,甚至改变客户端请求的方法。

HeaderName

指定将被重写的客户头,可取的值与 RewriteCond 指令中TestVerb参数相同。

Pattern

限定规则表达式以匹配Request-URI。

FormatString

限定将生成新的URI的FormatString 。

[Flags]

是一个下列FLAGS的命令分隔列表。

I (ignore case)

不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令。

F (Forbidden)

对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。

L (last rule)

不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写。

N (Next iteration)

强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略。

NS (Next iteration of the same rule)

以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目。

R (explicit redirect)

强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则。

RP (permanent redirect)

几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码。

U (Unmangle Log)

当URI是源需求而不是重写需求时记载URI。

O (nOrmalize)

在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的。

CL (Case Lower)

小写。

CU (Case Upper)

大写。

所属专题:
如果您觉得本文或图片不错,请把它分享给您的朋友吧!

 
搜索
 
 
广告
 
 
广告
 
故事大全
 
版权所有- © 2012-2015 · 故事大全 SITEMAP站点地图-Foton Auman手机看故事 站点地图-Foton Auman