【问题标题】:Tuckey - URL redirect works but forwarding does notTuckey - URL 重定向有效,但转发无效
【发布时间】:2015-03-09 19:51:56
【问题描述】:

我有一个简单的 tukey 规则将路径转发到另一条路径,如下所示:

<rule>
  <name>foo</name>
  <condition name="user-agent">some condition based on device</condition>
  <from>^/abc/(.*)$</from>
  <to type="forward">/xyz/$1</to>
</rule>

事实上,我在点击 /abc 时得到 404,但是当我将类型更改为“重定向”时,它工作正常。

我定义的规则有什么问题吗?

【问题讨论】:

    标签: java tomcat jetty tuckey-urlrewrite-filter


    【解决方案1】:

    &lt;to type="forward"&gt;/xyz&lt;/to&gt;

    等价于

    RequestDispatcher rq = request.getRequestDispatcher("/xyz"); 
    rq.forward(request, response);
    

    转发发生在服务器上。 servlet 容器只是将相同的请求转发到目标 url,而浏览器并不知道这一点。所以你的转发目标网址应该在相同的上下文中。

    所以这意味着,如果/xyz/ URL 是某个外部 URL,而不是在您的应用程序上下文中,则您不能转发到它 - 相反您应该重定向。

    也就是说,我假设您的&lt;to&gt; URL 是外部的,这就是 UrlRewriteFilter 不起作用的原因。您可以更改为 redirect 或确保您希望转发到您的应用程序上下文中的 URL。

    【讨论】:

    • 你说的是根吗?如果是这样,是否有这样的配置?我认为它只是来自 url 指向的任何内容。
    • 我放了更多细节,请看一下。希望对您有所帮助。
    猜你喜欢
    • 2017-05-08
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2016-12-19
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多