Tomcat 没有向 Web 应用程序的上下文添加尾随斜杠
我希望让Tomcat自动向我的应用程序上下文添加一个尾部斜杠,如果输入的URL没有它。
当我使用Jetty进行测试时,它会自动将尾随斜杠添加到我的应用程序的上下文中,但Tomcat不会这样做。
我不确定一旦部署,上下文将被命名,因为我将WAR交给其他人,所以HTML中的任何资源引用都是相对的。有没有办法让Tomcat自动重定向到相同的上下文,并添加尾随斜杠?
目前在 Spring 3 中使用 Tomcat 7。
我希望让Tomcat自动向我的应用程序上下文添加一个尾部斜杠,如果输入的URL没有它。
当我使用Jetty进行测试时,它会自动将尾随斜杠添加到我的应用程序的上下文中,但Tomcat不会这样做。
我不确定一旦部署,上下文将被命名,因为我将WAR交给其他人,所以HTML中的任何资源引用都是相对的。有没有办法让Tomcat自动重定向到相同的上下文,并添加尾随斜杠?
目前在 Spring 3 中使用 Tomcat 7。
这是一篇旧文章,但从Tomcat 7.0.67开始,您需要将以下属性添加到您的上下文中.xml文件:
<Context mapperContextRootRedirectEnabled="true">...</Context>
根据 7.0.67 更新日志:
将为上下文根目录和目录提供重定向的功能(其中尾随 / 从映射器添加到 DefaultServlet)移动。这使得在重定向之前,任何配置的阀门和过滤器都可以处理此类请求。此行为可通过映射器ContextRootRedirectEnabled和mapperDirectOryRedirectEnabled属性进行配置,这些属性可用于恢复以前的行为。
在 Tomcat 上下文文档中:
mapperContextRootRedirectEnabled:如果启用,对Web应用程序上下文根的请求将在必要时由Mapper而不是默认Servlet重定向(添加尾部斜杠)。这更有效,但具有确认上下文路径存在的副作用。如果未指定,则使用默认值 false。
应用程序的 Web .xml似乎具有到 的映射。servlet 映射,使 tomcat 按原样将请求传递到 Web 应用程序(即不重定向)。"/*"
"/*"
要正确重定向,必须将映射更改为 just ,后者表示默认的 servlet。"/*"
"/"