UrlRewrite 是用來幹什麼的?

來源:互聯網
上載者:User

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_rewrite 和 IIS 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即可生效。

 

 ----------------------------------------------------------------------------------------------------------------------------

廢話少說,來個例子先:

首先引用 rulrewrite_2.6.jar 這個包把.

其次在工程web.xml 中設定filter , 添加如下:

 <filter>
  <filter-name>UrlRewriteFilter</filter-name>
  <filter-class>
   org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
  </filter-class>
  <init-param>
   <param-name>logLevel</param-name>
   <param-value>WARN</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>UrlRewriteFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

再在web-inf.xml 下添加一個檔案 urlrewite.xml ,內容如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"   
     "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">

<urlrewrite>
 <rule>
  <note>
   - 這是一個通用請求url rewrite - 將請求forword url加上“.do”的處理器上。 - 例: -
   請求 http://{domain}/user/login 將被forward到
   http://{domain}/user/login.do - 請求
  </note>
  <!-- > <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$</from -->
  <from>^/test/([a-z]+)/([a-z]+)$</from>
  <to type="forward">/test.do?country=$1&amp;city=$2</to>
 </rule>

</urlrewrite>

 

這樣地址攔中路徑為:

http://localhost:8080/Test/test/China/shanghai , 他訪問的路徑就成為了

http://localhost:8080/Test/test.do?country=china&amp;city=shanghai 了.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.