重寫原理
過程分析
疑惑地方
bool flag = url.indexof('.') != -1; 標記,表示如果請求字尾包含「.」的我們才進行重寫的執行
主要思路:使用篩選器攔截系統所有的請求,
第一步:去除掉不需要重寫的請求
第二步:載入系統的重寫配置規則
第三步:迴圈遍歷每條規則,如果匹配使用系統的context.rewritepath函式將攔截的請求,**到我們指定的ashx處理程式當中去
lookfor 到 sendto
注意地方
如何獲得系統所有的請求呢?
使用這個還有乙個好處,它不帶網域名稱,可以實現二級網域名稱的**操作
迴圈判斷每條規則
每乙個請求到達系統當中,都需要匹配每一條規則,每次切換規則,都需要用正規表示式乙個例項物件,一旦匹配成功直接跳出迴圈,這裡是比較好效能的地方
正則注意點
完全匹配^$注意這兩個符號,表示來完全匹配乙個請求的虛擬路徑,上面提到的path
301的實現
301用來將非www的鏈結,重定向到www上面去,注意不僅僅是首頁的非www跳轉
是全站的跳轉,所以這個地方的要求就在於必須在for規則迴圈判斷裡面寫
也就是startswith 就應用301的函式
總結:url的重寫需要把握以上幾個關鍵點,所以請思考
url重寫本質是什麼?就是將一條請求路由到我們想路由的處理程式當中去
url重寫是怎麼識別判斷的?通過正規表示式
重寫後的引數處理
如何從lockfor中也就是重寫的url中分離出請求相關的引數呢?
使用正規表示式的replace函式,來做引數的分離,這個地方是個關鍵的地方
擴充套件1301**:系統攔截了所有的請求之後,那就可以對請求做任意的**
擴充套件2實現子目錄的重寫【思考中。。。】
主要的思路都清楚,但是有些細節的地方還不是特別的清楚
慎用url重寫
為了使 url位址更加友好 當然可能有別的原因 很多站點使用了 url重寫,如http www.cnblogs.com life,在asp.net中通常要處理這樣的 url重寫,必須在iis中將 對映到aspnet isapi.dll c windows microsoft.net framewor...
url重寫技術
注釋掉 條目,以使用 http 模組執行重寫 注釋掉 條目,以使用 http 處理程式執行重寫。除了指定使用 http 模組還是 http 處理程式執行重寫外,web.config 檔案還包含重寫規則 重寫規則由兩個字串組成 要在被請求的 url 中查詢的模式 要替換此模式的字串 如果找到 在 we...
慎用url重寫
為了使url位址更加友好 當然可能有別的原因 很多站點使用了url重寫,如 http www.cnblogs.com life,在asp.net中通常要處理這樣的url重寫,必須在iis中將 對映到aspnet isapi.dll c windows microsoft.net framework ...