神奇的url重寫 動態頁面靜態化(II)

2021-08-25 15:06:27 字數 1951 閱讀 8112

接上一章的動態頁面靜態化。

方法二、通過url重寫。既動態頁面與靜態頁面使用同樣的url來實現。

例如:原請求為:href="tradesite.jspa?path=jtwl&id=1234"

重寫後為:href="tradesite/jtwl/1234.htm"

實現步驟:

1.在web.xml中加入

urlrewritefilter

org.tuckey.web.filters.urlrewrite.urlrewritefilter

loglevel

trace

沒錯就是乙個過濾器而已。定義了使用哪個類來進行url重寫、

當然要匯入相應的url重寫jar包:urlrewrite-3.0.4.jar

class:指明使用這個類的路徑。

loglevel

trace

指明debug模式。

urlrewritefilter

/*表示對所有的url都進行重寫。

還沒有完。

這時候要建立url重寫規則配置檔案urlrewrite.xml。主要是通過正規表示式來匹配實際要訪問的url去。

<?xml version="1.0" encoding="utf-8"?>

^/more/([a-za-z0-9]+)/([0-9]+)\.htm$

/secondpage.jspa?path=$1&id=$2

^/difang/([a-za-z0-9]+)/([0-9]+)\.htm$

/difangsite.jspa?path=$1&locpid=$2

^/index\.htm$

/index.jspa

^/localservice/([a-za-z0-9]+)\.htm$

/localservice.jspa?path=$1

^/toolclass/([a-za-z0-9]+)/([0-9]+)\.htm$

/toolclassbytpid.jspa?path=$1&tpid=$2

^/toolsite/([a-za-z0-9]+)/([0-9]+)\.htm$

/toolsitebycid.jspa?path=$1&tcid=$2

^/tradeservice/([a-za-z0-9]+)\.htm$

/tradeservice.jspa?path=$1

^/trade/([a-za-z0-9]+)/([0-9]+)\.htm$

/tradesite.jspa?path=$1&tradepid=$2

^/([a-za-z0-9_\-/]*)css/(.*\.css)$

/css/$2

^/([a-za-z0-9_\-/]*)js/(.*\.js)$

/js/$2

^/([a-za-z0-9_\-/]*)pic/(.*)$

/pic/$2

配置檔案的名稱必須這樣命名。因為在filter中已經規定了它會負責讀取urlrewrite.xml然後進行請求。

通過這個配置檔案也都能看得出只要頁面中的鏈結能匹配到這裡的配置規則、則會將它轉譯到新的url再次進行跳轉。

它的神奇之處在於 能替換所有的url包括頁面中需要引入的css、js、image等資料夾。

這樣你在生成靜態頁時既不需要你重新修改頁面鏈結。生成的檔案目錄名正好是你配置規則轉譯之前的目錄結構。例如href="tradesite/jtwl/1234.htm"

生成後的目錄即位:根目錄/tradesite/jtwl/1234.htm/

在特殊需求下還會變為:根目錄/tradesite/jtwl/1234/curr/[color=red]時間毫秒值1293413755437.htm[/color]

這樣在每次生成靜態頁時則不會覆蓋原來的檔案。而可以設定規則讓使用者每次訪問到的為時間值最大的那個檔案。

URL 的重寫和擬靜態化

ok!話不多說,開始正文 我用的是urlrewritefilter,首先在web.xml上進行配置 urlrewritefilter org.tuckey.web.filters.urlrewrite.urlrewritefilter 通過過濾器對url進行過濾 接下來是具體的過濾頁面 swellp...

動態頁面靜態化

一 tomcat的過濾器 最典型的就是用 urlreweite的類庫.1.將所需的urlrewrite x.x.x.jar放在web inf lib中 修改web.xml增加過濾器,然後配置個過濾的規則就可以了web.xml修改部分 urlrewritefilter org.tuckey.web.f...

動態頁面靜態化

動態變靜態 方法一 使用現成的 外掛程式,比如 isapi rewrite iis rewrite apache http伺服器的mod rewrite等,它們都是基於 正規表示式解析器開發的重寫引擎。它們的使用方法檢視它們自帶的幫助即可。方法二 自己寫的 實現動態網頁靜態化,方法也有好幾種 1 建...