天天看點

IIS下的URL重寫元件:ISAPI Rewrite 介紹及相關應用IIS下的URL重寫元件:ISAPI Rewrite 介紹及相關應用

IIS下的URL重寫元件:ISAPI Rewrite 介紹及相關應用

本文來自: 華麟志    原文位址:http://www.hua-lin.net/blog/isapi-rewrite-intro-36

什麼是URL重寫(URL Rewrite)?

URL 重寫就是把傳入 Web 請重定向到其他 URL 的過程。

比如浏覽器發來請求http://www.hua-lin.net/blog/about/,伺服器自動将這個請求中定向為http://www.hua-lin.net/blog/index.php?pagename=about  關于URL重寫的相關内容我們将在以後的文章中詳細介紹。

我們知道在Apache中有mod_rewrite來實作URL的重寫功能(URL Rewrite),然而IIS并沒有自帶這個功能,是以我們就需要使用第三方元件來實作。其實目前有好幾種IIS下的Rewirte元件,都是通過ISAPI篩選器來加載然後實作URL重寫的。

用得比較廣泛的一個是ISAPI Rewrite,基本上國内支援Rewirte功能的Windows網站空間都采用了該元件。ISAPI Rewrite元件有免費版以及商業版,免費版隻支援全局httpd.ini配置(不能對每個站點進行單獨設定,除非通過加載不同的dll來實作,比較麻煩。)而商業版支援使用者自定義httpd.ini檔案,隻要放在站點根目錄下就能生效。這個大大友善了使用者自己修改URL重寫規則。

ISAPI Rewrite是一個基于正規表達式的強大的URL處理引擎,他使用起來基本上就像Apache的mod_rewrite,但是他是專門為微軟的Internet Information Server (IIS)設計的。

ISAPI Rewrite是一個使用純C/C++編寫的ISAPI篩選器,是以速度是相當快的!ISAPI Rewrite使你可以自由的規劃網站的URL。

ISAPI全稱為Internet Server Application Program Interface。

ISAPI Rewrite 2 産品位址:http://www.isapirewrite.com/

ISAPI Rewrite 3 産品位址 :http://www.helicontech.com/isapi_rewrite/

3.0版本主要特性是支援采用Apache的 .htaccess檔案來在IIS中使用 mod_rewrite。這個特性使得IIS和Apache在日常應用的Rewrite上的差別基本消除了。

國内大部分空間商都沒有關注到商業版這個非常友善的功能,隻為使用者設定全局重寫規則,這樣會影響伺服器性能,以及當某些規則比較複雜時,會造成沖突,給使用者帶來不便。

華麟創想在提供網站空間時,特别關注了這方面的功能,使使用者能夠自定義自己站點的URL重寫規則,讓使用者可以更好的使用網站空間。

安裝篇:

ISAPI Rewrite在安裝上相當友善,如果你下載下傳的是安裝包,隻需要按照提示進行安裝即可。而如果你下載下傳的是壓縮包,那麼隻要将檔案夾解壓縮的任意目錄,然後在IIS站點的ISAPI篩選器中添加ISAPI Rewrite的dll即可。

在站點屬性中,選擇ISAPI篩選器,然後添加ISAPI Rewrite元件即可。

這裡要注意的是:必須給予ISAPI Rewrite所在目錄IIS_WGP組的讀寫權限,否則你的網站就會直接Service Unavailable,應用程式池遇到錯誤而停止。在事件檢視器中可以找到相應的錯誤。

如果在安裝上有問題,歡迎您到華麟創想社群提問,我們會盡力為您解答。

使用篇:

安裝成功以後,接下來就要看看怎麼用了。我們這裡隻說一下最簡單的應用,因為大多數人隻用URL重寫功能來實作SEF(搜尋引擎友好),以及簡單的防盜鍊的功能(可以參考利用 ISAPI Rewrite 實作防盜鍊)。如果您有興趣了解一些深入的功能的話,可以去看一下官方的使用手冊。

我們需要對ISAPI Rewrite編寫URL重寫的規則,将這些規則寫在httpd.ini中,使用者通路時,就能實作URL重寫。

編寫Rewrite規則需要我們對正規表達式有一定的了解,推薦大家看一下《30分鐘正規表達式入門教程》。當你了解了正規表達式以後,如何編寫規則請參考官方使用手冊以及一些例子,相信很快就會上手。

ISAPI Rewrite 2使用手冊:http://www.isapirewrite.com/docs/ISAPI_Rewrite

ISAPI Rewrite 3使用手冊:http://www.helicontech.com/isapi_rewrite/doc/

當然,網上有很多别人寫好的Rewrite Rules(重寫規則),我們可以友善的使用,因為大部分程式所使用的URL重寫規則是一樣的,比如Discuz!, Wordpress等。

日後我們會整理一些常用的URL Rewrite 規則提供給大家使用,當然如果你的網站沒有現成的規則,也可以通過這些規則進行簡單的修改後直接使用。

當我們已經寫好了httpd.ini以後,将httpd.ini放在相應的位置後就能使用了(免費版放在ISAPI Rewrite安裝目錄中,商業版隻需要放在需要重寫的站點根目錄下就可以了)。