UrlRewriter技術簡單運用

         如何增強你網站中地址的可讀性和讓搜索引擎快速的收錄到你的站點,這就需要你美化你的網頁的地址,也就是我們常說的Url重寫技術,大家熟悉的可能有很多服務器都提供Url重寫的技術,以前我們用的最多的就是Apache,Jboss這樣一些服務器自帶的一些Url重寫,但是他們的配置比較麻煩,性能又不是太好,現在我們有專一的開源框架來完成Url重寫任務,今天我要介紹的就是UrlRewriter。使用起來比較簡單,配置是相當的簡單明瞭。
     我們先簡單的瞭解一下使用Url重寫能給你網站帶來哪些好處。
    第一:有利於搜索引擎的抓取,因爲現在大部分的搜索引擎對動態頁面的抓取還比較弱,它們更喜歡抓取一些靜態的頁面。而我們現在的頁面大部分的數據都是動態的顯示的。這就需要我們把動態頁面變成靜態的頁面,有利於搜索引擎的抓取。
   第二:讓用戶更容易理解,很少有用戶去關心你網站的頁面的地址,但對一般的大中型網站增強可讀性還是必須的。這樣會讓你的網站更加完美。
  第三:隱藏技術的實現,我們可以通過Url重寫可以實現技術的隱藏。不至於暴露你所採用的技術,給一些想***你網站的愛好者提供方便。
  第四:可以很方便的重用,提高網站的移植性。如果我們後臺方法改動的話,可以保證前臺的頁面部分不用改。這樣就提高了網站的移植性。
   它雖然有這麼多的優點,但是也有一點缺點的,因爲它是通過過濾器原理來實現的,就以爲着又多了一道訪問,會多少影響點訪問速度的,這個可以忽略不計的。
   現在UrlRewriter技術有兩個技術平臺的,一個就是在Java方向的,另一個就是.NET方向的。今天我們講的是Java方向的應用。
   首先讓我們瞭解它的工作原理,說白了它就是一個簡單的過濾器(Filter) ,看看源碼你就會很快的明白,它就是通過我們在jsp中常用的兩個方法實現的forward(),sendRedirect().
   下面我們就快速的爲你的網站搭建Url重寫技術。
    第一步:下載urlrewrite-2.6.0.現在最新版本是3.1的。([url]http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip[/url]
   第二步:在WEB-INF目錄下建一個urlrewrite.xml文件。
   第三步:在web.xml中初始化。加上下面的代碼:
   <!-- Set URL Rewrite-->
 <filter>
  <filter-name>UrlRewriteFilter</filter-name>
  <filter-class>
   org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
  </filter-class>
 </filter>
 <filter-mapping>
  <filter-name>UrlRewriteFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
    最後我要簡單的講一下常用的兩個配置規則.以下就是簡單的urlrewrite.xml配置片段。不要習慣Java的命名法把它寫成urlRewrite.xml,這樣即使你加上
<init-param>
   <param-name>confPath</param-name>
   <param-value>/WEB-INF/urlRewrite.xml</param-value>
 </init-param>
  在啓動的服務器的時候還是會報錯的,因爲源碼中必須是全小寫的(urlrewrite.xml)且只能放到WEB-INF下面。
     <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
        "[url]http://tuckey.org/res/dtds/urlrewrite2.6.dtd[/url]">
<urlrewrite>
  <rule>
  <from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>
  <to type="forward">/$1.htm?category=$2&amp;page=$3</to>
 </rule>
  <rule>
     <from>^/rss/yahoo\.html$</from>
       <to type="redirect">    [url]http://add.my.yahoo.com/rss? url=http://feed.feedsky.com/W3CSSiteFeed[/url]
      </to>
 </rule>
</urlrewrite>
   所有的規則配置都寫在這裏。第一個常用個規則就是站內的簡單重寫。
<rule>
  <from></from>
  <to type="forward></to>
</rule>
  <from></from>寫上你自己定義的訪問地址,<to type="forward></to>就是實際的訪問地址。比如我們實際的訪問地址是:[url]http://yousite.com/entity.htm[/url] ?category=user&page=2.而我們想把它重寫爲[url]http://yousite.com/entity/uesr/page_2.html[/url]。這樣看起來比我們實際的要好看的多。我們就應該這樣的寫:  
<rule>
  <from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>
  <to type="forward">/$1.htm?category=$2&amp;page=$3</to>
 </rule>
   簡單的介紹一下常用的正規表示式:
 
代碼 說明
. 匹配除換行符以外的任意字符
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束
常用的&要用  &amp;來表示。$1,$2代表與你配置正規表達式/(\w+)/(\w+)/相對應的參數。<to type="forward">默認的是 type="forward".
  另一個常用的規則就是連接外部的網站。就要用到。<to type="redirect">
 <rule>
     <from>^/rss/yahoo\.html$</from>
       <to type="redirect">    [url]http://add.my.yahoo.com/rss? url=http://feed.feedsky.com/MySiteFeed[/url]
      </to>
 </rule>
   我們的網站用到最多的無非就這兩種規則。至於正規表達式的寫法很多種。希望對有感興趣的朋友,可以試試。
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章