[英]Tuckey - URL redirect works but forwarding does not
我有一個簡單的曲棍球規則,將一條路徑轉發到另一條路徑,如下所示:
<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,但是當我將類型更改為“ redirect”時,它可以正常工作。
我定義的規則有什么問題嗎?
<to type="forward">/xyz</to>
相當於
RequestDispatcher rq = request.getRequestDispatcher("/xyz");
rq.forward(request, response);
轉發發生在服務器上。 Servlet容器只是將相同的請求轉發到目標url,而瀏覽器對此一無所知。 因此,您的轉發目標網址應在相同的上下文中。
因此,這意味着,如果/xyz/
URL是某個外部URL,而不是在您的應用程序上下文中,則無法轉發給它-而是應該重定向。
就是說,我假設您的<to>
URL是外部的,這就是為什么UrlRewriteFilter不起作用的原因。 您可以更改為redirect
或確保要轉發到應用程序上下文中的URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.