思路 URL重寫

2021-10-02 07:01:37 字數 977 閱讀 2422

重寫原理

過程分析

疑惑地方

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 ...