1. 程式人生 > >用ISAPI Rewrite實現IIS 301轉向(重定向跳轉)

用ISAPI Rewrite實現IIS 301轉向(重定向跳轉)

實現301轉向的方式有很多,比如apache伺服器通過修改.htaccess檔案,asp,php程式通過新增301轉向程式碼等等,具體請看301轉向(重定向跳轉)的實現。

有時候為了seo優化的需要,要儘量減少搜尋引擎索引網站重複頁面,其中有一項重要工作就是在帶www和不帶www的頂級域名中選擇一個讓搜尋引擎索引。對於Google搜尋引擎,我們可以使用Google 首選域功能,另外如果是Apache伺服器的話也可以通過修改.htaccess檔案來實現301重定向,比如設定將www.farlee.info 301轉向到farlee.info,實現方法在301轉向也有介紹。

但是如果虛擬主機是windows主機,IIS並不支援.htaccess檔案,百度搜索引擎又不支援首選域設定,這時只能將一個域名301重定向到另外一個域名。那麼在IIS下如何實現301重定向?其實國內很多Windows 虛擬主機空間都支援ISAPI篩選器,可以通過ISAPI Rewrite 來實現IIS下的301轉向(或叫301重定向, 301跳轉)。

ISAPI Rewrite 是什麼


ISAPI Rewrite 是在IIS下為實現類似Apache mod_rewrite功能的第三方Rewrite元件。ISAPI是Internet Server Application Program Interface的縮寫,意為Internet 服務應用程式介面,是基於正則表示式的。Helicon tech 的ISAPI Rewrite 元件有免費Lite版本以及商業版,免費版只支援全域性的httpd.conf 配置,商業版支援使用者自定義httpd.ini檔案,支援目錄和站點級的類似.htaccess的配置。ISAPI Rewrite算是一個powerful URL處理引擎,現在最新版本是3.0。

所以和Apache mod_rewrite功能一樣,Windows 主機IIS 通過ISAPI篩選器不僅可以實現URL重寫,還可以實現301重定向。下面介紹使用不同版本的ISAPI Rewrite元件在不同情況下的301轉向程式碼:

ISAPI Rewrite實現 301轉向程式碼


1. 將不帶www的頂級域名301重定向到帶www的域名

# ISAPI_Rewrite 2.x 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond Host: ^farlee/.info$
RewriteRule (.*) http/://www/.farlee/.info$1 [I,RP]

# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^farlee/.info$
RewriteRule (.*) http/://www/.farlee/.info$1 [NC,R=301]

2. 不同域名之間的301轉向

# ISAPI_Rewrite 2.x 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^isapirewrite/.com$
RewriteRule (.*) http/://www/.farlee/.info$1 [NC,R=301]

# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP:Host} ^www/.isapirewrite/.com$
RewriteRule (.*) http/://www/.farlee/.info$1 [NC,R=301]

3. 將頁面301重定向到另外一個頁面

# ISAPI_Rewrite 2.x 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule ^/oldpage.html$ http://farlee.info/newpage.html[I,O,RP,L]

# ISAPI_Rewrite 3.0 版本
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule ^/oldpage.html$ http://farlee.info/newpage.html[NC,L,R=301,O]

注意:ISAPI_Rewrite 1.3是現在國內應用得比較多的一個老版本,它可用於url 重寫,但並不適合用來實現真正的301重定向功能。建議下載最新的ISAPI_Rewrite 3.0 版本。在 url轉發和301轉向(重定向跳轉)的實現 這篇文章介紹了一段ISAPI_Rewrite 1.3 的重定向程式碼,這段程式碼在IIS下對域名重定向雖然能夠順利跳轉,但是返回的仍然是302 HTTP header,而不是301 狀態碼。而且該段程式碼用於301重定向後,在blog中的其他頁面都會跳轉到首頁。

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