原來用 ISAPI_Rewrite
很簡單 直接在ini中加一句
RewriteRule /detail_(.*)_(.*).html /detail.asp\?catid=$1\&id=$2 [N,I]
就實作了偽靜態頁面和實際頁面的轉換
/detail/123/1000001.html
/detail.asp?catid=123&id=1000001
什么正則運算式都不需要了解 一個(.*) 解決全部 支持字母數字甚至漢字(編碼)
/abc-1-2.htm
/分類123/1.htm
/china-shanghai/1.htm
/%C9%CF%BA%A3/1.htm
--------
如今用iis8.5 之前的ISAPI_Rewrite 不能用了 需要改url重寫
csdn上看有人說 可以匯入代碼 上面的ISAPI_Rewrite 代碼匯入 按別人說的加^$
<rules>
<rule name="已匯入的規則 1">
<match url="^detail_(.*)_(.*).html$" ignoreCase="true" />
<action type="Rewrite" url="detail.asp\?catid={R:1}\&id={R:2}" appendQueryString="false" />
</rule>
測驗結果404
/detail_2_1.html
看日志是
/detail_2_1.html ?catid=123&id=1000001
也就是只能識別引數,找不到源檔案.
完全看不懂原因,繼續找別人寫的。
--------
csdn又找了個例子
<match url="^t-(\d+)$" ignoreCase="false" />
<action type="Rewrite" url="/company/third.asp?thirdid={R:1}" />
測驗 /t-1 頁面通過 好現象 在這個基礎上改吧
--------
改成
<match url="^t-(\d+)-(\d+)+.htm$" ignoreCase="false" />
<action type="Rewrite" url="/detail.asp?catid={R:1}&id={R:2}" />
ok 實作了 t-2-1.htm這樣的純數字引數的轉換 基本完成預期
--------
但有些url是類似 t-abc-1.htm格式 也就是帶有字母 \w就可以了 \w包含\d吧 簡單
<match url="^t-(\w+)-(\d+)+.htm$" ignoreCase="false" />
<action type="Rewrite" url="/detail.asp?catid={R:1}&id={R:2}" />
--------
有些url是類似 t-%C9%CF%BA%A3-1.htm 也就是帶有漢字編碼的 帶百分號的 用字母不行 我用 非換行和非中劃線 這個規則測驗好像可以 但這個不知道有沒有安全問題
<match url="^t-([^-\n]+)-(\d+)+.htm$" ignoreCase="false" />
<action type="Rewrite" url="/detail.asp?catid={R:1}&id={R:2}" />
--------
有些url是類似 /t/123/china-shanghai.htm 也就是有引數是類似域名的格式 用 非換行非小數點 測驗可以
<match url="^t\/(\d+)\/([^.\n]+)+.htm$" ignoreCase="false" />
<action type="Rewrite" url="/detail.asp?catid={R:1}&id={R:2}" />
--------
感覺上面兩個 非中劃線 非小數點 太籠統 再改進成 a-zA-Z0-9 外加-_ 通過 也就是字母數字加中劃線下劃線
<match url="^t\/(\d+)\/([-a-zA-Z0-9_]+)+.htm$" ignoreCase="false" />
按照這個思路 把漢字url也修改為 \w\% 通過
<match url="^t-(\d+)-([\w\%]+)+.htm$" ignoreCase="false" />
--------
至此,全部偽靜態檔案格式都能轉換了.
數字引數 [\d]
字母引數 [\w]
英文引數 [-a-zA-Z0-9_] (字母數字加中劃線下劃線) 用[-\w_]也一樣吧?
中文引數 [\w\%] (編碼后為字母數字加%)
不知道這樣寫 有沒有問題 因為之前的(.*) 經常有人拿注入代碼測驗的.
有沒有更好的寫法 歡迎指點
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/112635.html
標籤:IIS
上一篇:想做一個點擊之后可以最小化的
