2012-08-07 65 views
0

我正嘗試使用UrlRewriteFilter 4.0.3將舊的servlet url重定向到新的url。我有一堆工作規則,但在<from></from>中有一個servlet url的那個不起作用。UrlRewriteFilter規則不能使用servlet url

我的規則是這樣的:

<rule> 
    <from>/servlet/OldServlet\?old_parameter=&amp;id=([0-9]+)$</from> 
    <to type="redirect">/servlet/NewServlet?new_parameter=&amp;document_id=$1</to> 
</rule> 

我試圖切出「從」碎片「+」。我設法通過刪除「?」來使規則起作用從我的網址和規則。看來,servlet的URL不符合定義的規則。出於傳統原因,OldServlet仍然映射在我的web.xml中。

編輯:

org.tuckey.web.filters.urlrewrite.UrlRewriter DEBUG: processing request for /servlet/OldServlet

的URL會從微調 「?」。

編輯2:

UrlRewriter.java:

public String getPathWithinApplication(HttpServletRequest request) { 
    String requestUri = request.getRequestURI(); 
    ... 

似乎UrlRewriteFilter使用不返回完整URL的方法。

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getRequestURI()

返回從協議名稱,最多在HTTP請求的第一行的查詢字符串這個請求的URL的一部分。

回答

2

查詢字符串默認不附加。在向urlrewrite添加use-query-string="true"屬性後開始工作。

<urlrewrite use-query-string="true">