用ISAPI_Rewrite實現(xiàn)asp的靜態(tài)化
ASP網(wǎng)站程序在國內(nèi)運用很廣,但是類似于im286.asp?id=20050307213811這樣的URL有點不利于搜索引擎的收錄,也就是說不符合友好URL(URLs-Friendly)的標準,那么我們用ISAPI_Rewrite打造一個Clean URL,
1.下載ISAPI_Rewrite.ISAPI_Rewrite分精簡(Lite)和完全(Full)版.精簡版不支持對每個虛擬主機站點進行重寫,只能進行全局處理.不過對于有服務(wù)器的朋友,精簡版也就夠啦.精簡版下載地址:http://www.helicontech.com/download/,就是那Lite Version (free)啦.
2.安裝.msi的文件,和裝一般程序一樣裝就可以了,俺就裝在D:\ISAPI_Rewrite.
3.接下來一步比較重要哦,看仔細嘍.打開Internet 信息服務(wù),右鍵,web站點屬性,電ISAPI篩選器選項卡.添加篩選器,名稱自己填,路徑自己指定ISAPI_Rewrite.dll,然后確定.
4.來測試一下.新建一個1ting.asp,里面寫上
|
|
<%=request.querystring("inso")%> |
|
,效果就是執(zhí)行的時候1ting.asp?inso=*瀏覽器顯示*.
5.這一步很重要哦,開始添加rewrite規(guī)則.正則,好頭痛,幸虧這個例子比較簡單.
找到ISAPI_Rewrite目錄,把httpd.ini的只讀屬性去掉,打開編輯.我們要把1ting.asp?inso=im286映射成為1ting-im286.html這樣的類型,需要在httpd.ini里加上這么一行:
|
|
RewriteRule /1ting-([0-9,a-z]*).html /1ting.asp\?inso=$1 |
|
,保存.
6.來來來,到瀏覽器里查看一下效果吧.輸入http://127.0.0.1/1ting.asp?inso=im286和http://127.0.0.1/1ting-im286.html,顯示的內(nèi)容是不是都是im286?這就證明成功啦!
嘿嘿,1ting-im286.html這樣的頁面要比1ting.asp?inso=im286容易收入,所以現(xiàn)在還在用動態(tài)方式的朋友可以嘗試一下這樣的靜態(tài)映射效果. IIS Rewrite也可以實現(xiàn)這樣的功能。
------------------------------------------------------
ASP之URL重寫
下載ISAPI_Rewrite解壓到任意文件夾安裝,給IIS用戶讀取權(quán)限,在IIS右鍵點擊一個站點,屬性,ISAPI篩選器,添加,篩選器名稱一定得叫 re,可執(zhí)行文件就點瀏覽找到你解壓的目錄Rewrite.dll加上即可。
重啟IIS后應(yīng)該就能支持URL重寫規(guī)則了。
需要修改解壓目錄中的httpd.ini這個文件
RewriteRule /info_(\d+)\.htm /info\.asp\?id=$1 [N,I]
這句話就可以把提交的地址http://www.xxx.com/info_122.htm映射到真正的地址 http://www.xxx.com/info.asp?id=122
如果你在處理數(shù)據(jù)翻頁,那么寫法是:
More_<%=Page%>_<%=type%>.html (注:page是翻頁頁數(shù),type是數(shù)據(jù)類型)
表現(xiàn)形式:More_1_95.html
如果翻下一頁,則為:More_2_95.html,繼續(xù)下一頁的循環(huán),則是:
More_3_95.html,以此類推。
不過你需要在httpd.ini文件中增加以下代碼:
RewriteRule /More_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2 [N,I]
如果你的動態(tài)程序有多個參數(shù)需要傳遞,那么就增加多個(\d+)即可,如下:
RewriteRule /More_(\d+)_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2&type2=$3 [N,I]
翻頁處理表現(xiàn)形式是:More_1_95.html
如果想把http://www.xxx.com/info.asp?id=50#abc 轉(zhuǎn)換成靜態(tài)的網(wǎng)頁
因為#abc是程序處理了ID=50這個變量生成靜態(tài)頁面之后按錨點又做了一次頁內(nèi)鏈接,所以應(yīng)該這么做映射
http://www.xxx.com/info.asp?id=50#abc轉(zhuǎn)換成http://www.xxx.com/info_50.htm#abc,重寫規(guī)則如下:
RewriteRule /info_(\d+)\.htm#(\d+) /info\.asp\?id=$1#$2 [N,I]
注意:以前在Window 2000 IIS5.0一直使用ISAPI_Rewrite進行動態(tài)鏈接重寫HTML靜態(tài)網(wǎng)址,
最近升級到 Widnows 2003 IIS6.0 后,發(fā)現(xiàn)ISAPI_Rewrite根本運行不起來,在IIS 6.0里面一直提示“未加載”,后來查了又查,原來是文件的權(quán)限問題。
IIS 6.0 ISAPI_Rewrite 是在Service帳號下運行的,將數(shù)據(jù)文件的讀寫權(quán)限給予Service 帳號后,ISAPI_Rewrite 終于可以正常運行了。
|