概要
分析如何使用微軟提供的ASP.NET來對動態產生的URL地址進行網址重寫。 網址重寫是實現一種截取網址請求並將其進行處理後重新指向到一個指定的網址的過程。作者本人在對各種實現網址重寫的技術進行研究和探討後得出的經驗和方法,希望能對您有所幫助。
內容簡介
稍微花點時間看一看你做的網站裡頭的URL地址,你看到類似這樣的地址嗎http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary ?也許你會出於某種目的把大量的頁面文件從一個目錄甚至一個網站轉移到其他地方,而許多訪問者出於個人興趣或者研究目的之前就已經將原有網址收藏了起來, 如果這時他從收藏夾打開該頁面的時候發現這已經是壞鏈了。本文旨在介紹如何使用網址重寫將那些“難看”的網址轉換成比較有實際意義的網址,使其便於記憶。例如將http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary轉換成如下地址:http://yoursite.com/ dispEmployeeInfo/459-099/summary.html 。我們甚至發現 網址重寫技術可以解決令人頭疼的404錯誤,或者說它可以創建一個智能化的404錯誤解決方案。
如上所述,網址重寫是實現一種截取網址請求並將其進行處理後重新指向到一個指定的網址的過程。 在網址重寫執行的期間,相應處理程序處理被請求的網址,從中提取出相關的值,然後重新指向一個新的指定地址。例如:由於一次網站目錄調整,原有的 /people/ 子目錄下的所有網頁全部移動到/info/employees/目錄,原訪問者從收藏夾或者其他什麼地方點擊鏈接發出訪問/people/目錄下的文件的請求時,你肯定希望他還是能通過原有地址看到和原來相同的頁面,但實際上看到的卻是網址重寫指向的新目錄下的相應文件。
在老版本ASP中,使用網址重寫技術的途徑很少,要麼寫一個 ISAPI過濾器,要麼購買第三方廠商提供的網址重寫組件,然而在微軟提供的ASP.NET下你可以通過多種方法很簡單地開發出自己的網址重寫軟件,以滿足自己各種不同的需要。本文將和你一起討論這門針對ASP.NET開發人員的實現網址重寫的技術,然後舉一些網址重寫實際應用的例子。在我們深入探討網址重寫技術的細節之前,我們先看一下日常使用網址重寫技術實現的場景。
網址重寫的一般用途
創建一個數據操作的ASP.NET程序最常見的就是一個aspx頁面後面帶上一些查詢參數集合。例如在設計一個電子商務網站的時候,假定你設計了一項功能允許用戶浏覽待售的商品,為了更加方便操作,你設計了一個頁面displayCategory.aspx將商品按照給定的分類顯示,那麼該分類下的商品顯示頁面上應該在頁面文件對應網址後面加上了一個商品分類的查詢參數,例如用戶要查詢待售的“裝飾品”,在數據庫中所有的裝飾品數據對應的分類編號CategoryID的值為5,那麼用戶會訪問如下網址:http://yoursite.com/displayCategory.aspx?CategoryID=5。
創建一個包含類似這樣網址的網站最終有兩種結果,首先從最終用戶的角度來觀察,http://yoursite.com/displayCategory.aspx?CategoryID=5 這個網址有些雜亂, 可行性分析專家Jakob Neilson(主頁: http://useit.com/) 建議選擇網址顯示方式時候考慮如下要求(參考網址:http://www.useit.com/alertbox/990321.html):
·是否簡短
·是否易於輸入
·是否將站點結構形象化
·是否具有隱蔽性,也就是讓用戶通過一個虛擬的看似有意義的導航地址訪問指向該地址
我想還應該在上述列表中再增加一條: 是否便於記憶。http://yoursite.com/displayCategory.aspx?CategoryID=5 這個地址沒有一個地方符合Neilson標准的任何一條,也不便於記憶。當然,對於有經驗的網絡開發專家來說,他們很熟悉這種鍵值對構成的查詢參數結構體系,然而對於普通用戶來說輸入這些帶有參數的網址實在是太麻煩了。
一種較好的方法就是使用一種比較直觀且容易記憶的方式來將網址表示為: http://yoursite.com/products/Widgets 乍一看很容易就會推斷這個網址所對應的內容極有可能會是顯示裝飾品(Widgets)信息,這個網址就變得更加容易記憶和傳播!然後我告訴我的同事:“請查看這個網址:http://yoursite.com/products/widgets ”不用我說第二遍,她可能一次就把地址敲到浏覽器上了(你也可以在亞馬遜(Amazon.com)的網站上這樣嘗試一下)。很快就浏覽器上就列出了裝飾品(Widgets)的內容。這裡“隱蔽性”表示:用戶可以自行變更網址的結尾,例如輸入:http://yoursite.com/products 就能看到全部分類相關的商品列表或者列出所有相關商品分類目錄列表。
注:用上述簡單的變更網址內容的方法來構思一下如今的比較流行的Blog網站生成的網址。例如:要查詢2004年1月28日所發的帖子,只需輸入 http://someblog.com/2004/01/28 即可,如果將網址裁減為 http://someblog.com/2004/01 則顯示 2004年1月份的帖子 ,同樣將月份裁減掉得到 http://someblog.com/2004 則顯示出2004年全年所發的帖子。
網址重寫技術除了用於將復雜的網址簡單化之外,它還能用於處理因網站目錄調整或者其他原因導致產生大量的無效鏈接和過期書簽。