UrlRewriteFilter规则不使用servlet url

时间:2012-08-07 07:51:02

标签: servlets servlet-filters tuckey-urlrewrite-filter

我正在尝试使用UrlRewriteFilter 4.0.3将旧的servlet URL重定向到新的。我有一堆工作规则,但<from></from>中带有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>

我试图用“。+”剪掉“from”的片段。我设法通过删除“?”来使规则正常工作从我的网址和规则。似乎servlet URL与定义的规则不匹配。由于遗留原因,OldServlet仍然在我的web.xml中映射。

编辑:

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

网址会从“?”中删除。

编辑2:

UrlRewriter.java:

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

似乎UrlRewriteFilter使用的方法不会返回完整的网址。

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

  

将此请求的URL部分从协议名称返回到HTTP请求第一行中的查询字符串。

1 个答案:

答案 0 :(得分:3)

默认情况下不附加查询字符串。我将use-query-string="true"属性添加到urlrewrite后开始工作。

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