應用:面向搜尋引擎友好。
比如xxx.com/news.aspx?id=5 這樣的網址搜尋引擎是不感興趣的, 可以重新導向成 xxx.com/news/5.htm。
重新導向有幾個層次
1:IIS之上
在請求沒有進入IIS分配aspx處理的時候進行重新導向。好處是不管是不是xx.aspx都可以進行處理,就算是php的一樣可以重新導向到asp.net處理常式裡面。
2:Asp.net中
比如放在globle裡面,可以重新導向xx.aspx,但是不能重新導向目錄,或者.htm之類的。(設定篩選器也可以,麻煩一點)
所以我選擇的是第一種方法。
有一個工具很不錯:IISRewrite,qwerksoft製作。原文:http://www.qwerksoft.com/products/iisrewrite/安裝使用方法:1:把設定檔rewrite.ini和RewriteEval.dll兩個檔案放在同一個目錄下,現在是建立在C:\WINDOWS\system32\inetsrv\IISRewrite目錄裡面。2:在IIS上添加一個ISAPI篩選器:IIS管理工具/要添加的網站/屬性/ISAPI篩選器/添加--找到RewriteEval.dll3:測試回合:重啟IIS服務,把helloworld.htm檔案放置到IIS主目錄,然後訪問localhost/xxhelloworldxxx. 如果可以開啟該檔案,表示安裝成功(凡是任何包含helloworld字樣的訪問路徑都可以)4:配置重訂向規則:開啟rewrite.ini,然後加入一個規則 RewriteRule .*ventureT/([^.]*) /ventureT/subT/sIndex.aspx?id=$1。 使用的是Regex,意思是:凡是沒有任何尾碼(不加‘.’)的訪問,都沒重新導向到sIndex.aspx,並且把ventureT/以後的字串作為參數傳遞給sIndex。5:Regex不區分大小寫6:意義:不僅可以重訂向xx.xxx這樣的檔案,還可以重新導向目錄、沒有尾碼的等等(內建在IIS裡面的都不能實現這種功能)
7:程式裡面的代碼不需要修改:Resposne.Redirect("xxx.aspx?id=xx")這樣的語句依然沒問題,雖然在IIS上重新導向,他依然可以把這個地址重新導向到你需要的地方;用js開啟的就跟沒問題了。
至於第二種方法,也可以,但是不能重新導向目錄(還沒有重新導向到asp..net的處理域,所以代碼不會執行)
有高手已經寫的比較清楚了(ThunderMain.URLRewriter),有源碼。
http://www.cnblogs.com/edobnet/archive/2004/06/02/12866.aspx
這是配置的一個例子
<rule>
<url>VentureT/([^.].*)</url>
<rewrite>VentureT\subT\sIndex.aspx?id=$1</rewrite>
</rule>
還有一個也不錯:url rewriter,Helicon製作
原文:http://www.chedong.com/tech/google_url.html
也是用Regex來寫的。
其實還有一種方法,就是自己寫程式作重新導向了。