Tomcat不会在Web应用程序的上下文中添加尾部斜杠是什么情况?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (85)

我想让Tomcat在如果没有它的URL输入自动为我的应用程序的上下文添加一个尾部斜杠

当我使用Jetty进行测试时,它会自动将尾部斜线添加到我的应用程序的上下文中,但Tomcat不会执行此操作。

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

目前在Spring 3中使用Tomcat 7。

提问于
用户回答回答于

但从Tomcat 7.0.67开始,需要将以下属性添加到您的context.xml文件中:

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

根据7.0.67更新日志:

将提供重定向的上下文根和目录的功能从Mapper添加到DefaultServlet。这使得这些请求能够在重定向之前由任何配置的阀门和过滤器进行处理。此行为可通过上下文的mapperContextRootRedirectEnabled和mapperDirectoryRedirectEnabled属性进行配置,该属性可用于恢复先前的行为。

与Tomcat相关的文件:

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

用户回答回答于

看起来你的应用程序的web.xml有一个映射到"/*"。一个servlet映射"/*"导致tomcat将请求原样传递给Web应用程序(即不重定向)。

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

扫码关注云+社区

领取腾讯云代金券