采用HttpModules来重写URLs(原理篇)转
據說通過HttpModules可以將類似于:http://www.infotouch.cn/detail.aspx?id=120?的URL地址重寫為:http://www.infotouch.cn/detail/120.aspx?。這樣最直接的好處就是可以讓搜索引擎搜索到頁面,因為搜索引擎對?之后的參數不太理睬。
今天嘗試了一下,發現一個需要注意的問題,就是HttpModules只能對特定擴展名的URL進行重寫(注:只能對“映射”-“應用程序擴展”中指定交給Asp.Net處理的擴展名文件進行處理),從Google找了些英文資料,發現這種情況是由IIS處理請求的機理決定的。
IIS對于沒有擴展名的URL處理請求的機理:
如果請求的路徑(path)有擴展名,IIS首先查找是否已設定了對應的應用程序擴展,有則將控制權交給該應用程序:
所以對于 http://www.infotouch.cn/detail.aspx?id=120?這樣的情況很容易處理,只要處理為 http://www.infotouch.cn/detail/120.aspx?即可。因為IIS根據*.aspx的擴展名將控制權交給了Asp.Net,進而轉給了HttpModules。
如果請求的路徑(path)沒有擴展名,例如:http://www.infotouch.cn/detail?這樣的路徑。IIS首先檢查該虛擬路徑是否對應到一個本地目錄,如果具有對應的本地目錄,再查找該目錄下是否具有缺省文件,如果找到,就重定向為該缺省文件的路徑。否則,IIS報告一個Http404-文件未找到錯誤。
轉載于:https://www.cnblogs.com/wgx1323/archive/2006/09/14/504207.html
總結
以上是生活随笔為你收集整理的采用HttpModules来重写URLs(原理篇)转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在asp.net中实现回车替代Tab键
- 下一篇: 海文考研名师做客新浪解析2007心理学考