Urlrewrite规则不捕获问号

时间:2014-09-25 07:57:37

标签: java web-applications tuckey-urlrewrite-filter

目前,我在同一个网络应用(app1)中有2个网络服务(ws1和ws2)。

我们现在决定将Web服务分成不同的网络应用程序:ws1保留在app1中,ws2现在进入app2。但是,我们不想更改调用客户端代码以了解2个应用程序。所以客户不断调用/ app1 / urls

所以使用Tuckey Urlrewritefilter我在app1中设置了这个规则来重写任何对app2的ws2请求:

<rule>
    <from>^/(ws2.*)$</from>
    <to type="redirect">/app2/$1</to>
</rule>

例如,/ app1 / ws.2.get被重定向到/app2/ws2.get。没关系。

但是/ app1 / ws2?wsdl的请求被重定向到/ app2 /。

它似乎不是正则表达式的问题,因为我已经独立测试了它并且它有效。

任何想法为什么问号导致捕获只包含'ws2'?

1 个答案:

答案 0 :(得分:0)

我认为问号之后的所有内容都被解释为查询字符串的一部分,而不是URL,因此它不会被捕获。如果是这样,您将要将查询字符串附加到重定向,如下所示:

<rule>
  <from>^/ws2$</from>
  <to type="redirect">/app2/?%{query-string}</to>
</rule>