urlMapping----隱藏真正的url

使用ASP.Net 2.0中的urlMapping技術,我們可以將真實的url映射成其它的url,從而達到隱藏真正的url,使顯示出的url對用戶更加容易理解。

 

1、新建一個asp項目,在項目裏增加一個web page命名爲“urlMapping.aspx”。

 

2、在頁面上拖放一個label控件,更改Text屬性爲“Choose a link below:”(點擊下面的鏈接)。然後拖放兩個HyperLink控件,把它們的Text屬性改爲“Link01”和“Link02”,NavigateUrl改爲“~/Software.aspx”和“~/Hardware.aspx”。如果此時我們運行這個頁面(右鍵點擊--〉View in Browser),當鼠標移到HyperLink上時,瀏覽器底部的狀態欄會顯示出超鏈接“Software.aspx”或“Hardware.aspx”。如果單擊這個超鏈接就會報錯,因爲我們並沒有建立這兩個頁面文件。

 

3、在項目裏打開Web.config文件,找到<system.web>節點,在其下面加入如下內容:

 

 

 

 

這就是把Software.aspxHardware.aspx映射到urlMapping.aspx,並用不同的QueryString來表示。

 

4、爲了檢查運行效果,我們再往頁面上託兩個控件。一個是Label,修改Text屬性爲QueryString;另一個爲TextBox,其缺省id爲TextBox1。然後雙擊urlMapping頁面,在Page_Load裏寫上一條語句:

this.TextBox1.Text =Request.QueryString["id"];

這是運行結果,注意地址欄顯示的是真正的url:

 

這是點擊Link01後的結果。地址欄顯示的是Software.aspx,但實際調用的是urlMapping.aspx?id=software,TextBox裏顯示的就是傳遞的id參數。


我寫這一篇是因爲網站地圖有些問題困擾了我很久(詳見http://topic.csdn.net/u/20100621/22/cfe5231e-222c-411f-a1f6-9a7374d2188d.html),很長時間沒找到答案。如果用url重寫,不但麻煩,實現起來也很困難。

 

使用urlMapping,如果映射的項目比較少應該很方便,但是對幾千種實時變化的產品來說,就力不從心了。當選擇分類時用urlMapping,而顯示某一產品的詳細內容時則不用urlMapping,這樣會不會很詭異?如果讓內行看到會笑掉大牙的!

 

還有兩個問題。其一是容易引起目錄層次的誤會,如果在網頁中調用圖片,有可能顯示不出來。其二是在VS2008裏會顯示文件找不到,因爲確實沒有這樣的文件。雖然運行沒問題,但總有一堆錯誤提示挺煩人的。當然我們可以用Respnse.Redirect("~/Software.aspx")來替換。就是麻煩了一點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章