ASP怎麼實現url-rewite

來源:互聯網
上載者:User
在聊這個技術問題前,我不由得想起一個可笑的故事。NetCraft曾經做了一個測評,這個測評根據比較大量網站頁面的副檔名是ASP.NET的還是JSP/Servlet的,得到了一個結論,現在ASP.NET的應用超過了JSP/Servlet。

這個測評引發了大量的討論,很多用JSP的技術人員嘲笑這個測評。因為這個測評的結論忽略了一個很大的問題。那就是,JSP開發的網站的頁面,一定是.jsp嗎?

答案當然是否定的。特別是mvc結構的網站常常都是沒有.jsp副檔名的,這是一個慣例了。如果不是為了避免混淆,我們甚至可以讓JSP的引擎來解析副檔名為aspx的jsp程式,或者讓ASP.NET的引擎來解析副檔名為jsp的ASP.NET程式。唯一需要做的就是在伺服器的管理工具上面做一些選擇,或者修改設定檔等等。

另外,我們還可以用更強大的技術UrlRewrite,來把動態網頁面的地址變成象一個靜態頁面一樣,或者把動態網頁面的參數,變成靜態頁面地址中的路徑名或者檔案等等。所以,有時候,請不要太相信你的眼睛,只要伺服器管理員想做,那麼也許某個.htm地址其實是一個ASP.NET程式,某個.doc其實是一個JSP程式。眼見並不一定為實。

靜態頁面對於搜尋引擎的友好性是毋庸置疑的,但是,動態網頁面的優勢對於網站維護的便利,論壇和其他需要程式控制的機制來說也是必需的。

我們除了可以用使用內容發布系統把頁面發布為靜態html格式以外,還有另外的選擇。那就是靜態--〉動態網頁面的映射。這裡,Apache伺服器上有一個非預設模組mod_Rewrite。使用了Regex方式,把動態網頁面轉換為靜態頁面。這樣我們就可以把me.asp?para=123映射成me/123.html這樣的靜態頁面。當遇到me/123.html的請求時,web server自動導向me.asp?para=123來處理。

UrlRewrite是怎麼樣發生作用的?

簡單的說,一個web server的工作就是根據使用者請求的地址發送一個檔案,或者運行一個cgi/指令碼,並把運行結果發送給使用者。加入了UrlRewrite功能的web server的工作流程略有變化,首先是看使用者請求的地址是否包括在我們的替換規則裡面。如果在,先把使用者請求的地址進行改變,然後伺服器按照新的地址進行檔案傳送或者cgi/指令碼執行。參看:

UrlRewrite有什麼用處?

1、滿足搜尋引擎的要求
某些搜尋引擎不能支援動態網頁面的抓取,大量的資訊就不能被潛在使用者搜尋到。用UrlRewrite技術你可以把 http://server/news.asp?id=111 變成 http://server/news/111.htm 這樣他們就會被搜尋引擎收錄了。google雖然可以抓取動態網頁面,但是google對動態網頁面的評分一般低於靜態頁面。所以,對大量資訊發布的網站,把網站地址改變成靜態絕對是值得的。

2、隱藏技術實現,提高網站的移植性
每個頁面都掛著鮮明的.asp/.jsp這種開發語言的標記,可以一眼讓人看出你的網站使用什麼語言做的。而且在改變網站的語言的時候,你需要改動大量的連結。而且,一個頁面修改了副檔名,他的pagerank也會隨之消失,從頭開始。我們可以用UrlRewrite技術隱藏我們的實現細節,這樣修改移植都很方便,而且完全不損失pagerank。

3、滿足美感的要求
對於追求完美主義的網站設計師,即使是網頁的地址也要看起來簡潔明快。形如 http://server/news.asp?channel=3&id=111 的網頁地址,肯定是上不了完美主義者的法眼的,用UrlRewrite技術,你可以把他變成 http://server/news/3/111.htm 。

IIS 5.0支援UrlRewrite嗎?

答案很簡單,不支援。但是我們可以通過安裝伺服器擴充讓IIS支援。

目前有兩種產品支援IIS 5.0的UrlRewrite,isapi_rewriteIIS Rewrite

isapi_rewrite: http://www.helicontech.com/download/#isapi_rewrite
IIS Rewrite :http://www.qwerksoft.com/products/iisrewrite/download.asp

這裡只有ISAPI Rewrite的一個LITE版本是免費的,其它都是trial版本。ISAPI Rewrite Lite的版本功能。

我們採用isapi_rewrite Lite Version(免費版本)。

引用:

This is simplified edition of ISAPI_Rewrite. It does not support per-virtual-site configurations, proxiing, metabase monitoring and automatic cache cleanup but all other features are supported.

所以,lite版本不支援虛擬網站配置,中繼資料監測和自動緩衝清理。

metabase中繼資料:metabase 中繼資料庫 指一個駐留記憶體的資料存放區地區,其中存放著IIS的配置值。/Metabase是儲存成System32\Inetsrv
資料夾中的Metabase.bin檔案

如何進行UrlRewrite的設定?

isapi_rewrite利用Regex進行替換規則的表示。

下面是一個簡單的例子,我想讓我們的使用者輸入 http://server/test-12314.html 實際上訪問的是 http://server/test.asp?id=12314 。那麼我們的匹配運算式應該是 /test-([0-9]*).html 對應的格式化運算式應該為 /test.asp\?id=$1 。

進行Regex的編寫的時候,可以利用isapi_rewrite提供的Regex測試載入器(預設安裝提供),進行調試。如:

做好了匹配運算式和格式化運算式,我們可以按照下面的格式,把它們放到安裝目錄下的httpd.ini裡面。

格式:RewriteRule 匹配運算式 格式化運算式
剛才的例子:RewriteRule /test-([0-9]*).html /test.asp\?id=$1

檔案儲存後,不需重新啟動iis即可生效。

參考資料:

面向Google(Search Engine Friendly)的URL設計
http://www.chedong.com/tech/google_url.html

ISAPI REWRITE文檔
http://www.isapirewrite.com/docs/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.