我正在努力驯服urlrewritefilter,它看起来像 比如当一个带有重定向的规则与另一个带有转发的规则匹配时,我将无法按预期看到我在地址栏中重定向的URL。
以下是配置代码段:
<rule>
<from>/patha</from>
<to type="redirect">/pathb</to>
</rule>
<rule>
<from>/pathb</from>
<to type="forward">/pathc</to>
</rule>
在我尝试访问patha
patha
将我的浏览器重定向到pathb
的规则,地址栏中的网址正在更改。pathb
的规则也是一个很好的匹配,因此浏览器会转发到pathc,但是,因为这是转发,地址栏中的URL 仍为pathb 但实际上发生的事情是我在没有任何地址栏更改的情况下转发到pathc。
我的问题是:为什么会如此以及我如何才能真正实现我的目标?
UPD: 我已经通过jsp中的重定向测试了urlrewritefilter:
response.setStatus(302);
response.setHeader("Location", "pathb");
response.setHeader("Connection", "close");
结果相同 - 不会重写URL。
答案 0 :(得分:5)
您注意到的是预期的行为。使用forward
,您将永远不会在浏览器中看到该网址。请参阅以下forward
和redirect
之间的差异:
转发强>
<强>重定向强>