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中進行配置了。
這個文件的配置網上也一大堆,真假難辨,以下是我親寫的規則,保證有用,經過試驗!
- [ISAPI_Rewrite]
- # 3600 = 1 hour
- CacheClockRate 3600
- RepeatLimit 32
- # 請在下面添加您的規則
- RewriteRule /Default.htm /default.aspx
- RewriteRule /(.*).htm\?id=(\d+) /$1.aspx\?id=$2
- RewriteRule /(.*)_(\d+).htm /$1.aspx\?id=$2
- 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、符合正則表達式的使用規則。
=====