IIS中配置ISAPI篩選器:Rewrite1.3.0.16的應用。

 ISAPI篩選器,現在網絡上最多的應用就是作爲僞靜態輸出。

因爲這種操作人力成本最低,所以很適合搭配ASP.NET來操作。國內空間也支持這個。

===============================

前幾天幫客戶上傳一個網站,網站裏用了是web.config配置了僞靜態。

這個就是網上通常所說的利用一個rewrite.dll來配置ASP.NET網站。

這個網站在本地機運行良好。但是,上傳到服務器就不行了。

GOOGLE了好幾天的資料,發現網上的都是轉載,大多未經親自試驗,讓我實在頭疼。經過這兩天的搜索,總結一下:

第一:通過web.config進行配置(利用網上熱傳的rewrite.dll)

ASP.NET上通過WEB.CONFIG配置的確可以達到僞靜態的效果,但是不能脫離IIS去配置,配置了WEB.CONFIG文件後,仍然需要在IIS上這樣操作:

在服務器的iis配置中,需要設置如下信息:
站點-屬性-主目錄-配置-通配符應用程序映射(執行順序)中插入:
c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

=================================

第二:配置ISAPI篩選器(利用這個Rewrite1.3.0.16)

這種方法,無需對ASP.NET進行任何特殊配置。

在Rewrite1.3.0.16文件夾中,有如下文件

httpd.ini

httpd.parse.errors

mtbnotif.dll

Rewrite.dll

有了這幾個文件後,在IIS中添加ISAPI篩選器即可,操作方法如下:

默認網站——右鍵屬性——ISAPI篩選器——添加——篩選器名稱re,可執行文件選擇上述文件夾中的rewrite.dll——確定即可。(應該無需重啓IIS,但建議重啓。)

隨後,就需要在httpd.ini中進行配置了。

這個文件的配置網上也一大堆,真假難辨,以下是我親寫的規則,保證有用,經過試驗!

 

  1. [ISAPI_Rewrite] 
  2. # 3600 = 1 hour 
  3. CacheClockRate 3600 
  4. RepeatLimit 32 
  5. # 請在下面添加您的規則         
  6. RewriteRule /Default.htm /default.aspx 
  7. RewriteRule /(.*).htm\?id=(\d+) /$1.aspx\?id=$2 
  8. RewriteRule /(.*)_(\d+).htm /$1.aspx\?id=$2 
  9. RewriteRule /(.*)_(\d+).do /$1.aspx\?id=$2 

rewriterule 後面跟着的就是規則。

/代表網站根目錄(不太準確,應該是當前目錄,反正需要知道就是該網頁所在虛擬路徑)

上面的四行分別是

1、把對Default.htm的訪問提交爲 default.aspx。

2、把匹配(.*).htm\?id=(\d+) 這個規則的訪問,提交爲$1.aspx\?id=$2 

例子:如訪問snowleung.htm?id=12345,則和訪問snowleung.htm?id=12345結果相同。

3、把匹配(.*)_(\d+).htm 這個規則的訪問,提交爲$1.aspx\?id=$2

例子:如訪問snowleung_12345.htm,則和訪問snowleung.htm?id=12345結果相同。(隱藏參數嗎?)

 

4、把匹配(.*)_(\d+).do 這個規則的訪問,提交爲$1.aspx\?id=$2

例子:如訪問snowleung_12345.do,則和訪問snowleung.htm?id=12345結果相同。(改寫後綴名嗎?)

有了以上的規則,你應該可以輕易寫出自己的輸出了。

補充幾個小小的正則,可以讓你快速解決問題。

1、小括號()裏面表示參數值,後可利用$1,$2引用。

2、轉移字符要用\

3、符合正則表達式的使用規則。

=====

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章