最簡單的是基於各種WEB伺服器中的URL重寫轉向(Rewrite)模組的URL轉換:
這樣幾乎可以不修改程式的實現將 news.jsp?id=234 這樣的連結映射成 news/234.html,從外面看上去和靜態連結一樣。resin伺服器上可以通過webinfo的web.xml來設定:URL REWRITE功能之強大足夠寫上一本書。
當我需要將將news.jsp?id=234的映射成news/234.html時,只需設定web-inf所在目錄下面的web.xml:
並且增加以下語句
<filter filter-name='rewrite'
filter-class='com.caucho.filters.RewriteFilter'>
<init>
<rewrite pattern="/(/d+)/.html" target="//news.jsp/?id=$1"/>
//<rewrite pattern="/value_(.+)/.html" target="//news.jsp/?t=$1"/> 這句是作為另外的參數設定的
</init>
</filter>
<filter-mapping url-pattern='/*' filter-name='rewrite'/>
其他方法大家可以自己去摸索,rewrite的功能非常強大。
這樣設定後就可以通過1234.htm這樣的連結訪問原來的動態網頁面了。
通過URL REWRITE還有一些好處:
- 隱藏後台實現:這在後台應用平台的遷移時非常有用:當從jsp遷移到asp平台時,對於前台使用者來說,根本感受不到後台應用的變化;
- 簡化資料校正:因為像(/d+)這樣的參數,可以有效控制數位格式甚至位元;
比如我們需要將應用從news.jsp?id=234遷移成news.php?query=234時,前台的表現可以一直保持為 news/234.html。從實現應用和前台表現的分離:保持了URL的穩定性,而使用mod_rewrite甚至可以把請求轉寄到其他後台伺服器上。