Urlrewrite

UrlRewrite就是我們通常說的地址重寫,用戶得到的全部都是經過處理後的URL地址。

主要優點,使用範圍,使用方法,

主要優點

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

使用範圍

地址重寫一般是用於將動態地址偽靜態。如果本身就是靜態就沒必要了。地址重寫後網站製作者可以通過輸入地址名直接訪問。

使用方法

首頁,訪問其官網:我下載的是最新的目前還處於Beta版的urlrewritefilter-3.2.0,下載後將其中的urlrewrite-3.2.0.jar扔到需使用此功能項目的lib目錄中去
其次,在web.xml中加入如下配置:
<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>    <dispatcher>REQUEST</dispatcher>    <dispatcher>FORWARD</dispatcher></filter-mapping>
其實,urlrewrite其實就是個過慮器,它將會過慮用戶的所有請求,符合規則的便對其進行重定向,具體的配置參數的使用方法見官方文檔:
配置好web.xml後將下載的urlrewritefilter-3.2.0中的urlrewrite.xml配置檔案放在WEB-INF目錄下,這樣在使用urlrewritefilter時它便自動到該目錄下讀取相關的配置了,我配置了個簡單的,代碼如下:
Urlrewrite
rule結點中from的規則默認使用的是正則表達式來匹配的,當用戶訪問伺服器時的URL會與該配置相比較,如果符合規則就會按照下面to結點中的配置對其進行跳轉,其默認是forward跳轉,具體配置可見官網文檔。
outbound-rule結點是伺服器解析後的頁面URL對外表現的形式,配置與上面的大體相同,如我一新聞連結代碼在JSP中書寫的形式如下:
Urlrewrite
經伺服器解析後,最終顯示在頁面中的將變成:
<li>· <a href="/項目名/zh_CN/NewsInfo/NEWS_9999" mce_href="項目名/zh_CN/NewsInfo/NEWS_9999" target="_blank" title="${cur.titleSub}">新聞標題</a></li>
當用戶點擊此連結後urlrewrite便用通過rule的配置重跳轉到真正的訪問地址,這樣便很好的隱藏了真實地址
這其中有點是需要注意的,引用官網中的一段話:
Using the example above JSP's with the code
<a href="<%= response.encodeURL("/world.jsp?country=usa&amp;city=nyc") %>">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>
Or JSTL
<a href="<c:url value="/world.jsp?country=${country}&amp;city=${city}" />">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>
Note, If you are using JSTL (ie, <c:url) this will work also.
意思就是說需要轉化的連結不能直接寫在a標籤中,需要寫在c:url或其他伺服器需要解析的變數中,這樣才能對其重新顯示。
在drupal中如果要開啟Clean URLs,需要開啟Apache里的urlrewrite組件。

相關詞條

熱門詞條

聯絡我們