這篇文章描述了一個(gè)完整的 ASP.NET 2.0 URL 重寫方案。這個(gè)方案使用正則表達(dá)式來定義重寫規(guī)則并解決通過虛擬 URLs 訪問頁面產(chǎn)生回發(fā)事件的一些可能的困難。
將 URL 重寫方法應(yīng)用到你的 ASP.Net 應(yīng)用程序的兩個(gè)主要原因是:可用性和可維護(hù)性。
誰都知道,相對于難于辨認(rèn)的帶參數(shù)的長的查詢路徑,用戶更喜歡一些短的、簡潔的 URL。任何時(shí)候,一個(gè)容易記住和敲入的路徑比添加到收藏夾更有用。其次,當(dāng)一個(gè)瀏覽器的收藏夾不可用時(shí),記住的地址總比在搜索引擎中輸入關(guān)鍵字進(jìn)行搜索,然后再查找要強(qiáng)的多。比較下面的兩個(gè)地址:
(1) | http://www.somebloghost.com/Blogs/Posts.aspx?Year=2006&Month=12&Day=10 |
(2) | http://www. somebloghost.com/Blogs/2006/12/10/ |
第一個(gè) URL 包含了查詢字符串;第二個(gè)URL包含的信息可以讓用戶清楚的看到他看的東西,它還可以使用戶更容易的修改地址欄的內(nèi)容,如:http://www.somehost.com/Blogs/2006/12/.
在很多WEB應(yīng)用程序中,開發(fā)人員經(jīng)常會(huì)將頁面從一個(gè)目錄移到另一個(gè)目錄,讓我們假設(shè)一開始有兩個(gè)可用頁面: http://www.somebloghost.com/Info/Copyright.aspx 和 http://www.somebloghost.com/Support/Contacts.aspx,但是后來開發(fā)者將 Copyright.aspx 和 Contacts.aspx 移到了 Help 目錄,用戶收藏起來地址就需要重新定位。這個(gè)問題雖然可以簡單的用 Response.Redirect(new location) 來解決,但是如果有成百上千的頁面呢?應(yīng)用程序中就會(huì)包含大量的無效鏈接。
使用 URL 重寫,允許用戶只需修改配置文件,這種方法可以讓開發(fā)者將web應(yīng)用程序邏輯結(jié)構(gòu)與物理結(jié)構(gòu)獨(dú)立開來。
ASP.NET 2.0 為 web 應(yīng)用程序提供了一個(gè)開箱即用的映射靜態(tài) URL 的解決方案。這個(gè)方案不用編寫代碼就可以在 web.config 中將舊的 URLs 映射到新的地址。 要使用 URL 映射,只需在 web.config 文件的 system.web 節(jié)中創(chuàng)建一個(gè)新的 urlMappings 節(jié) ,并添加要映射的地址 (“ ~/ ”指向應(yīng)用程序的根目錄):
<urlMappings enabled="true">
<add url="~/Info/Copyright.aspx" mappedUrl="~/Help/Copyright.aspx" />
<add url="~/Support/Contacts.aspx" mappedUrl="~/Help/Contacts.aspx" />
</urlMappings>
這樣,如果用戶輸入 http://www.somebloghost.com/Support/Contacts.aspx, 它將看到 http://www.somebloghost.com/Help/Contacts.aspx
新聞熱點(diǎn)
疑難解答
圖片精選