ISAPI_Rewrite 各版本301轉(zhuǎn)向大全(附ISAPI_Rewrite語法規(guī)則)
終于下定決心放棄之前啟用的二級域名,改回子目錄格式。經(jīng)測試改回子目錄后,百度收錄加快一天收錄多次,現(xiàn)在準備把之前的二級域名(google/soso都收錄了好幾萬頁)301重定向到子目錄下。使用IIS下301轉(zhuǎn)向方法,但問題出現(xiàn)了,發(fā)現(xiàn)收錄的部分偽靜態(tài)的頁面無法正確重定向,全部重定向首頁。
IIS 做偽靜態(tài)采用的是ISAPI_Rewrite 插件,大家知道ISAPI_Rewrite 不僅可以實現(xiàn)url 重寫,還可以用來設(shè)置301轉(zhuǎn)向(2.x以上才支持,1.3版本僅支持302轉(zhuǎn)向),下面介紹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 (.*) http\://www\.downcc\.com$1 [I,RP]# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^downcc\.com$
RewriteRule (.*) http\://www\.downcc\.com$1 [NC,R=301]
2. 不同域名之間的301轉(zhuǎn)向
# ISAPI_Rewrite 2.x 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^downcc\.cn$
RewriteRule (.*) http\://www\.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 (.*) http\://www\.downcc\.com$1 [NC,R=301]
3. 將頁面301重定向到另外一個頁面
# ISAPI_Rewrite 2.x 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule ^/oldpage.html$ http://downcc.com/dll.html[I,O,RP,L]# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule ^/oldpage.html$ http://downcc.com/dll.html[NC,L,R=301,O]
注意:ISAPI_Rewrite 1.3是現(xiàn)在國內(nèi)應(yīng)用得比較多的一個老版本,它可用于url 重寫,但并不適合用來實現(xiàn)真正的301重定向功能。建議下載最新的ISAPI_Rewrite 3.0 版本。ISAPI_Rewrite 1.3 的在IIS下對域名重定向雖然能夠順利跳轉(zhuǎn),但是返回的仍然是302 HTTP header,而不是301 狀態(tài)碼。而且該段代碼用于301重定向后,在子目錄中的其他頁面都會跳轉(zhuǎn)到首頁。
這樣設(shè)置以后,你的windows iis 也能實現(xiàn)301重定向了,不管是Google 和百度搜索引擎都不會有因為帶有www和不帶www 的域名而產(chǎn)生重復(fù)頁面問題了。
301重定向在線檢測工具:http://www.ab173.com/zhanzhang/getheader.php
附:ISAPI_Rewrite語法規(guī)則
ISAPI_Rewrite 規(guī)則對大小寫敏感,但可以忽略大小寫了。
I (ignore case)不管大小寫強行指定字符匹配。
例:RewriteRule /code/project/([0-9,a-z]*).html /soft.jsp\?softpy=$1 [I]
其他的參數(shù)一覽
I (ignore case)
不管大小寫強行指定字符匹配,這個FLAG影響RewriteRule指令和相應(yīng)的RewriteCond 指令。
F (Forbidden)
對客戶端做反應(yīng),停止REWRITING進程并且發(fā)送403錯誤,注意在這種情況下FORMATSTRING 是無用的并可以設(shè)置為任何非空字符串。
L (last rule)
不應(yīng)用任何重寫規(guī)則在此停止重寫進程,使用這個FLAG以阻止當前被重寫的URI被后面的規(guī)則再次重寫。
N (Next iteration)
強制REWRITINGENGINE調(diào)整規(guī)則目標并且從頭重啟規(guī)則檢查(所有修改將保存),重啟次數(shù)由RepeatLimit指定的值限制,如果這個數(shù)值超過N FLAG將被忽略。
NS (Next iteration of the same rule)
以N標記工作不從相同的規(guī)則重啟規(guī)則規(guī)則進程(例如強制重復(fù)規(guī)則應(yīng)用),通過RepeatLimit指令指定一個反復(fù)實行某一規(guī)則的最大數(shù)目。
P (force proxy)
強制目的URI在內(nèi)部強制為代理需求并且立即通過ISAPI擴展應(yīng)付代理需求,必須確認代理字符串是一個有效的URI包括協(xié)議 主機等等否則代理將返回錯誤。
R (explicit redirect)
強制服務(wù)器對客戶端發(fā)出重定向指示即時應(yīng)答,提供目的URI的新地址,重定向規(guī)則經(jīng)常是最后規(guī)則。
RP (permanent redirect)
幾乎和[R]標記相同但是發(fā)布301HTTP狀態(tài)而不是302HTTP狀態(tài)代碼。
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參數(shù)相同。
Pattern
限定規(guī)則表達式以匹配Request-URI。
FormatString
限定將生成新的URI的FormatString 。
[Flags]
是一個下列FLAGS的命令分隔列表。
I (ignore case)
不管大小寫強行指定字符匹配,這個FLAG影響RewriteRule指令和相應(yīng)的RewriteCond 指令。
F (Forbidden)
對客戶端做反應(yīng),停止REWRITING進程并且發(fā)送403錯誤,注意在這種情況下FORMATSTRING 是無用的并可以設(shè)置為任何非空字符串。
L (last rule)
不應(yīng)用任何重寫規(guī)則在此停止重寫進程,使用這個FLAG以阻止當前被重寫的URI被后面的規(guī)則再次重寫。
N (Next iteration)
強制REWRITINGENGINE調(diào)整規(guī)則目標并且從頭重啟規(guī)則檢查(所有修改將保存),重啟次數(shù)由RepeatLimit指定的值限制,如果這個數(shù)值超過N FLAG將被忽略。
NS (Next iteration of the same rule)
以N標記工作不從相同的規(guī)則重啟規(guī)則規(guī)則進程(例如強制重復(fù)規(guī)則應(yīng)用),通過RepeatLimit指令指定一個反復(fù)實行某一規(guī)則的最大數(shù)目。
R (explicit redirect)
強制服務(wù)器對客戶端發(fā)出重定向指示即時應(yīng)答,提供目的URI的新地址,重定向規(guī)則經(jīng)常是最后規(guī)則。
RP (permanent redirect)
幾乎和[R]標記相同但是發(fā)布301HTTP狀態(tài)而不是302HTTP狀態(tài)代碼。
U (Unmangle Log)
當URI是源需求而不是重寫需求時記載URI。
O (nOrmalize)
在實行之前標準化字符串。標準化包括URL-ENCODING,不合法的字符的再移動等,這個標記對于URLS和URLS-ENDODED頭是有用的。
CL (Case Lower)
小寫。
CU (Case Upper)
大寫。
關(guān)鍵詞:ISAPI_Rewrite
閱讀本文后您有什么感想? 已有 人給出評價!
- 2
- 1
- 2
- 9
- 1
- 34