萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> ISAPI

ISAPI

   終於下定決心放棄之前啟用的二級域名,改回子目錄格式。經測試改回子目錄後,百度收錄加快一天收錄多次,現在准備把之前的二級域名(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 (.*) 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轉向

  # 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是現在國內應用得比較多的一個老版本,它可用於url 重寫,但並不適合用來實現真正的301重定向功能。建議下載最新的ISAPI_Rewrite 3.0 版本。ISAPI_Rewrite 1.3 的在IIS下對域名重定向雖然能夠順利跳轉,但是返回的仍然是302 HTTP header,而不是301 狀態碼。而且該段代碼用於301重定向後,在子目錄中的其他頁面都會跳轉到首頁。

  這樣設置以後,你的windows iis 也能實現301重定向了,不管是Google 和百度搜索引擎都不會有因為帶有www和不帶www 的域名而產生重復頁面問題了。

  301重定向在線檢測工具:http://www.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)

  大寫。

copyright © 萬盛學電腦網 all rights reserved