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