Tomcat 没有向 Web 应用程序的上下文添加尾随斜杠

2022-09-02 11:57:26

我希望让Tomcat自动向我的应用程序上下文添加一个尾部斜杠,如果输入的URL没有它。

当我使用Jetty进行测试时,它会自动将尾随斜杠添加到我的应用程序的上下文中,但Tomcat不会这样做。

我不确定一旦部署,上下文将被命名,因为我将WAR交给其他人,所以HTML中的任何资源引用都是相对的。有没有办法让Tomcat自动重定向到相同的上下文,并添加尾随斜杠?

目前在 Spring 3 中使用 Tomcat 7。


答案 1

这是一篇旧文章,但从Tomcat 7.0.67开始,您需要将以下属性添加到您的上下文中.xml文件:

<Context mapperContextRootRedirectEnabled="true">...</Context>

根据 7.0.67 更新日志

将为上下文根目录和目录提供重定向的功能(其中尾随 / 从映射器添加到 DefaultServlet)移动。这使得在重定向之前,任何配置的阀门和过滤器都可以处理此类请求。此行为可通过映射器ContextRootRedirectEnabled和mapperDirectOryRedirectEnabled属性进行配置,这些属性可用于恢复以前的行为。

在 Tomcat 上下文文档中

mapperContextRootRedirectEnabled:如果启用,对Web应用程序上下文根的请求将在必要时由Mapper而不是默认Servlet重定向(添加尾部斜杠)。这更有效,但具有确认上下文路径存在的副作用。如果未指定,则使用默认值 false。


答案 2

应用程序的 Web .xml似乎具有到 的映射。servlet 映射,使 tomcat 按原样将请求传递到 Web 应用程序(即不重定向)。"/*""/*"

要正确重定向,必须将映射更改为 just ,后者表示默认的 servlet。"/*""/"


推荐