在ASP.Net2.0中實現UrlReWriter技術
來源:互聯網
上載者:User
關注UrlReWriter技術很久了,首先就是在部落格園裡接觸到的,之後在其他部落格網站也看到了相應的應用。
UrlReWriter,簡單的例子就是譬如將Article.Aspx?ArticleID=20類似的地址轉成一個虛擬位址,比如Article20.htm或者Article/20.htm,這樣瀏覽器讀Article20.htm或Article/20.htm這個地址就可以將它轉向真實的地址Article.Aspx?ArticleID=20。 這樣做的好處是便於搜尋引擎搜尋到這篇文章的內容,也有利於使用者理解網頁地址便於記憶,也安全,隱藏了真真實位址。 之前就看到了微軟MSDN裡關於UrlReWriter的介紹,不過語言晦澀,生硬難懂,以至於後來放棄了對它的研究。後來也看過別人寫的一些總結,瞭解到可以用一個DLL組件引用,不用再自己寫程式去實現UrlReWriter了。今天突然想用在首頁大巴裡面,於是再次拿起來,發現用組件實現起來非常簡單。 組件我瞭解到的有兩個,一個是微軟的UrlReWriter.DLL,一個是 老外寫的開源,專提供Asp.Net2.0的UrlRewritingNet,正合我意,呵呵。使用方法都是網上搜的,別人寫的http://www.hzpal.com/Discuss/DotNet/459.aspx(其實是部落格園裡的人寫的,只不過今天部落格園打不開)。我總結一下。 1.將UrlRewritingNet.UrlRewriter.dll拷到bin目錄下2.在web.config裡進行相關的配置3.拷貝urlrewritingnet.xsd檔案(這一步我沒做,因為別人也沒寫拷到哪裡,不過似乎沒影響,有問題再說,呵呵)4.定義Url重寫規則(就是你Aspx檔案中的連結改成重寫後的地址,我的理解是這個意思) 管它的呢,反正能實現就對頭。解釋:
<add name="Rewrite" virtualUrl="^~/(.*)/Detail(.*).htm" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Default.aspx?type=$1&id=$2" ignoreCase="true" /> 裡(.*)表示參數,也就是重寫後的地址格式,比如Detail(.*).aspx就可以將Detail1.Aspx轉成真真實位址。$1表示第1個參數。這裡參數是遵循規則式寫法的,比如(.[0-9]*)表示數字。此外還要在IIS\你的網站\屬性\主目錄\配置\映謝 加入一個和aspx 頁面的配置相同的副檔名項htm。注意“確認檔案是否存在”不要勾選,否則會出現找不到檔案。 最後一步是將Aspx頁中輸出的地址那裡改成相應的重寫地址,比如<a href=Detail<%# DataBinder.Eval(Container,"DataItem.ID")%>.htm> 我經過以上幾步就可以實現UrlReWriter了。
不過據說放了DATAGRID,有分頁的,你點到下一頁就發現,暈倒,又出問題了。不過俺沒碰到。
如果你碰到的話,可以參考這裡: http://www.dowebs.net/forums/index.php?showtopic=345,就是建立自己的HtmlForm。