如何增強你網站中位址的可讀性和讓搜尋引擎快速的收錄到你的站點,這就需要你美化你的網頁的位址,也就是我們常說的Url重寫技術,大家熟悉的可能有很多伺服器都提供Url重寫的技術,以前我們用的最多的就是Apache,Jboss這樣一些伺服器自帶的一些Url重寫,但是他們的配置比較麻煩,性能又不是太好,現在我們有專一的開源架構來完成Url重寫任務,今天我要介紹的就是UrlRewriter。使用起來比較簡單,配置是相當的簡單明了。
我們先簡單的了解一下使用Url重寫能給你網站帶來哪些好處。
第一:有利于搜尋引擎的抓取,因為現在大部分的搜尋引擎對動态頁面的抓取還比較弱,它們更喜歡抓取一些靜态的頁面。而我們現在的頁面大部分的資料都是動态的顯示的。這就需要我們把動态頁面變成靜态的頁面,有利于搜尋引擎的抓取。
第二:讓使用者更容易了解,很少有使用者去關心你網站的頁面的位址,但對一般的大中型網站增強可讀性還是必須的。這樣會讓你的網站更加完美。
第三:隐藏技術的實作,我們可以通過Url重寫可以實作技術的隐藏。不至于暴露你所采用的技術,給一些想攻擊你網站的愛好者提供友善。
第四:可以很友善的重用,提高網站的移植性。如果我們背景方法改動的話,可以保證前台的頁面部分不用改。這樣就提高了網站的移植性。
它雖然有這麼多的優點,但是也有一點缺點的,因為它是通過過濾器原理來實作的,就以為着又多了一道通路,會多少影響點通路速度的,這個可以忽略不計的。
現在UrlRewriter技術有兩個技術平台的,一個就是在Java方向的,另一個就是.NET方向的。今天我們講的是Java方向的應用。
首先讓我們了解它的工作原理,說白了它就是一個簡單的過濾器(Filter) ,看看源碼你就會很快的明白,它就是通過我們在jsp中常用的兩個方法實作的forward(),sendRedirect().
下面我們就快速的為你的網站搭建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>
<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"
<urlrewrite>
<rule>
<from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>
<to type="forward">/$1.htm?category=$2&amp;page=$3</to>
</rule>
<from>^/rss/yahoo\.html$</from>
</to>
</urlrewrite>
所有的規則配置都寫在這裡。第一個常用個規則就是站内的簡單重寫。
<rule>
<from></from>
<to type="forward></to>
</rule>
簡單的介紹一下常用的正規表示式:
代碼
說明
.
比對除換行符以外的任意字元
\w
比對字母或數字或下劃線或漢字
\s
比對任意的空白符
\d
比對數字
\b
比對單詞的開始或結束
^
比對字元串的開始
$
比對字元串的結束
常用的&要用 &amp;來表示。$1,$2代表與你配置正規表達式/(\w+)/(\w+)/相對應的參數。<to type="forward">預設的是 type="forward".
另一個常用的規則就是連接配接外部的網站。就要用到。<to type="redirect">
<rule>
我們的網站用到最多的無非就這兩種規則。至于正規表達式的寫法很多種。希望對有感興趣的朋友,可以試試。
本文轉自 weijie@java 51CTO部落格,原文連結:http://blog.51cto.com/weijie/89603,如需轉載請自行聯系原作者