UrlRewrite實現地址重寫

       我們在web項目開發中,難免會遇到URL中參數名、ID等完全暴露在用戶面前,如果用戶隨便亂輸的話,對系統的安全性造成威脅。這時,我們便會用到 UrlRewrite。

       UrlRewrite就是我們通常說的地址重寫,用戶得到的全部都是經過處理後的URL地址。地址重寫一般是用於將動態地址僞靜態。如果本身就是靜態就沒必要了。地址重寫後網站製作者可以通過輸入地址名直接訪問。

       使用地址重寫不僅可以提高安全性,可以有效的避免一些參數名、ID等完全暴露在用戶面前,如果用戶隨便亂輸的話,不符合規則的話直接會返回個404或錯誤頁面,這比直接返回500或一大堆服務器錯誤信息要好的多,而且可以美化URL,去除了那些比如*.do之類的後綴名、長長的參數串等,可以自己組織精簡更能反映訪問模塊內容的URL,更有利於搜索引擎的收入,通過對URL的一些優化,可以使搜索引擎更好的識別與收錄網站的信息。

接下來是使用實例:

1、首先需在項目的lib文件夾中加入urlrewrite-3.2.0.jar包

2、在web.xml中聲明Filter

<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>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

3、聲明完filter後,需要在WEB-INF目錄下新建一個urlrewrite.xml文件並在urlrewrite.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>
       <from>^/demo/(\w+).html$</from>
       <to type="redirect">/Struts/$1</to>
</rule>
</urlrewrite>
rule 是urlrewrite下的子節點,是urlrewrite的主要規則節點,在它裏面包含from 和to兩個子節點,from表示請求的URL,to表示將轉到的真實的URL。關於from,UrlRewrite有兩種匹配的模式,一種是正則表達式匹配,一種的通配符匹配,如上就是正則表達式匹配。當進行匹配的時候,匹配部分的正則可以被提取爲參數進行傳遞。



發佈了35 篇原創文章 · 獲贊 74 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章