為什么URL映射和重寫很重要?
下面是開發人員想要對URL有更大的靈活性的最常見的場景:
1) 處理這樣的情形:你要更改你的web應用中網頁的結構,但你同時也要確保在你移動網頁后,那些被人收藏的老URL不會成為死鏈接。重寫URL允許你透明地將請求轉交到新的網頁地址而不出錯。
2) 在象Google,Yahoo 和 Live 這樣的搜索引擎中提高你網站上網頁的搜索相關性。具體地來說,URL重寫經常能使你在你網站上網頁的URL里更加容易地嵌入關鍵詞,這么做往往會增加別人點擊你的鏈接的機會。從使用查詢字符串參數到使用完全限定(fully qualified)的URL也能在某些情形下提高你在搜索引擎結果中的優先順序。使用強制referring鏈接使用同樣的大小寫(same case)和URL入口(譬如,使用weblogs.asp.net/scottgu 而不是 weblogs.asp.net/scottgu/default.aspx)的技術也能避免因跨越多個URL而造成的網頁排名(pagerank)的降低(avoid diluting your pagerank across multiple URLs),從而增加你的搜索結果。
在一個搜索引擎日漸驅動網站訪問量的世界里,在你的網頁排名上稍微得到一些提高就能給你的業務帶來不錯的投資回報(ROI)。逐漸地,這驅使開發人員使用URL重寫以及其他SEO(搜索引擎優化 )技術來優化網站(注,SEO是個步調很快的空間,增加你的搜索相關性的建議月月在演變)。想了解一些關于搜索引擎優化方面好的建議的話,我建議你閱讀一下《SSW Rules to Better Google Rankings (SSW的提高Google排名之要領)》,以及MarketPosition關于《how URLs can affect top search engine ranking (URL會如何影響頂級搜索引擎排名)》的文章。
例程的URL重寫場景
為這個博客貼子起見,我將假設我們將在一個應用里建造一套電子商務的產品目錄網頁,產品是按種類來組織的(譬如,圖書,錄像,CD,DVD等等)。
讓我們假定一開始我們有個網頁叫Products.aspx,通過查詢字符串參數接受一個類別名稱,相應地過濾顯示的產品。與這個Products.aspx網頁對應類別的URL看上去象這樣:
http://www.store.com/products.aspx/Books http://www.store.com/products.aspx/DVDs http://www.store.com/products.aspx/CDs
你也許很想知道怎么在ASP.NET中處理這個附加的參數的情形。好消息是,這非常簡單。只要使用Request的PathInfo屬性就可以了,該屬性返回URL中緊隨 products.aspx 后面的那部分內容。所以,對上面這些URL, Request.PathInfo會分別返回 “/Books”, “/DVDs”,和 “/CDs”(萬一你想知道的話, Request的Path 屬性返回“/products.aspx” )。
然后,你可以輕易地編寫一個函數來獲取產品類別,象這樣(下面這個函數去除前面的斜杠字符,只返回“Books”,“DVDs”,或 “CDs”):
Function GetCategory() As String If (Request.PathInfo.Length = 0) Then Return "" Else Return Request.PathInfo.Substring(1) End If End Function
方法二:使用HttpModule實現URL重寫
上述Request.PathInfo技術的替換方法是,利用ASP.NET提供的HttpContext.RewritePath方法。這個方法允許開發人員動態地重寫收到的URL的處理路徑,然后讓ASP.NET使用剛重寫過后的路徑來繼續執行請求。
譬如,我們可以選擇向大眾呈示下列URL:
http://www.store.com/products/Books.aspx http://www.store.com/products/DVDs.aspx http://www.store.com/products/CDs.aspx
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/