0

我正在尝试使用 UrlRewriteFilter 4.0.3 将旧的 servlet url 重定向到新的 url。我有一堆工作规则,但带有 servlet url 的规则<from></from>不起作用。

我的规则如下所示:

<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

网址从“?”修剪。

编辑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 ()

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

4

1 回答 1

3

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

<urlrewrite use-query-string="true">
于 2012-08-07T10:02:10.990 回答