2012-08-07 66 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">