在做國富科技
網站時,無意中看到僞靜態,於是查了一下,僞靜態從大的方面分爲兩種,一種是用IIS的ISAPI_Rewrite實現asp的靜態化,另一種方法就是新建一個文件夾,然後再其下建成一個index.asp文件。
首先來說 ISAPI_Rewrite
下載ISAPI_Rewrite解壓到任意文件夾安裝,給IIS用戶讀取權限,在IIS右鍵點擊一個站點,屬性,ISAPI篩選器,添加,篩選器名稱一定得叫 re,可執行文件就點瀏覽找到你解壓的目錄Rewrite.dll加上即可。
重啓IIS後應該就能支持URL重寫規則了。
需要修改解壓目錄中的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
如果你在處理數據翻頁,那麼寫法是:
More_<%=Page%>_<%=type%>.html (注:page是翻頁頁數,type是數據類型)
表現形式:More_1_95.html
如果翻下一頁,則爲:More_2_95.html,繼續下一頁的循環,則是:
More_3_95.html,以此類推。
不過你需要在httpd.ini文件中增加以下代碼:
RewriteRule /More_(/d+)_(/d+)/.html /jsp/more/.jsp/?page=$1&type=$2 [N,I]
如果你的動態程序有多個參數需要傳遞,那麼就增加多個(/d+)即可,如下:
RewriteRule /More_(/d+)_(/d+)_(/d+)/.html /jsp/more/.jsp/?page=$1&type=$2&type2=$3 [N,I]
翻頁處理表現形式是:More_1_95.html
如果想把http://www.xxx.com/info.asp?id=50#abc
轉換成靜態的網頁
因爲#abc是程序處理了ID=50這個變量生成靜態頁面之後按錨點又做了一次頁內鏈接,所以應該這麼做映射
http://www.xxx.com/info.asp?id=50#abc
轉換成http://www.xxx.com/info_50.htm#abc
,重寫規則如下:
RewriteRule /info_(/d+)/.htm#(/d+) /info/.asp/?id=$1#$2 [N,I]
注意:以前在Window 2000 IIS5.0一直使用ISAPI_Rewrite進行動態鏈接重寫HTML靜態網址,
最近升級到 Widnows 2003 IIS6.0 後,發現ISAPI_Rewrite根本運行不起來,在IIS 6.0裏面一直提示“未加載”,後來查了又查,原來是文件的權限問題。
IIS 6.0 ISAPI_Rewrite 是在Service帳號下運行的,將數據文件的讀寫權限給予Service 帳號後,ISAPI_Rewrite 終於可以正常運行了。
方法二:
首先建立一個目錄,建立一個index.asp文件,就是系統默認的那個文件
然後把以前如果是 show.asp?id=26 的時候,show這個文件首先需要得到id一般用
id=request.QueryString("id")
之類的獲得id.這裏把獲得id換成,獲得?後面的數字,用以下代碼.
id = LCase(Trim(Request.ServerVariables("QUERY_STRING")))
其他的鏈接數據庫方式不變
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "Select * From blog where id="&id, conn,3,3
兩種方法比較:ISAPI_Rewrite
這種方法比較能從全局控制,比較好,但由於服務器的限制,如果服務器上沒有裝ISAPI_Rewrite,如果要自己裝的話,須自己的服務器或者虛擬服務
器,能獨立操控服務器,還得能改規則表達式,成本比較高。第二種方法,更爲靈活,但是必須立相應的文件夾,沒有成本的存在。