2014-09-25 62 views
0

目前,我在同一个Web应用程序(app1)中有2个Web服务(ws1和ws2)。Urlrewrite规则不会捕获问号

我们现在已决定将Web服务分成不同的Web应用程序:ws1停留在app1中,现在ws2停在app2中。但是我们不希望更改调用客户端代码以了解2个应用程序。所以客户保持通话/ APP1 /网址

因此,使用Tuckey Urlrewritefilter我已经设置了APP1内这条规则重写任何WS2要求APP 2:

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

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

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

它似乎不是正则表达式的问题,因为我已经独立测试过它,它的工作原理。

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

回答

0

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

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