UrlRewriteFilter 规则不适用于 servlet url



我正在尝试使用 UrlRewriteFilter 4.0.3 将旧的 servlet url 重定向到新的 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"的部分。我设法通过从我的 url 和规则中删除"?"来使规则正常工作。似乎 servlet url 与定义的规则不匹配。由于遗留原因.xml OldServlet仍然在我的网络中映射。

编辑:

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

网址从"?"中修剪。

编辑2:

网址重写器.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 请求第一行中的查询字符串。

默认情况下

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

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

最新更新