如果没有输入url,我想让Tomcat自动在我的应用程序上下文中添加一个尾随斜杠。
当我使用Jetty进行测试时,它会自动将尾部斜杠添加到我的应用程序上下文中,但Tomcat不会这样做。
我不确定部署后上下文将被命名为什么,因为我将战争交给了其他人,所以HTML中的任何资源引用都是相对的。有没有办法让Tomcat自动重定向到相同的上下文,并添加一个尾随斜杠?
目前正在使用Tomcat7和Spring3。
发布于 2015-12-22 00:51:19
这是一篇老文章,但从Tomcat7.0.67开始,您需要向context.xml文件添加以下属性:
<Context mapperContextRootRedirectEnabled="true">...</Context>根据7.0.67 changelog
Move为上下文根和目录提供重定向的功能,在这些目录中,将尾随/从映射器添加到DefaultServlet。这样,在进行重定向之前,任何已配置的阀和过滤器都可以处理此类请求。此行为可通过上下文的mapperContextRootRedirectEnabled和mapperDirectoryRedirectEnabled属性进行配置,该属性可用于恢复先前的行为。
在Tomcat上下文documentation中
Servlet mapperContextRootRedirectEnabled:如果启用,对web应用程序上下文根的请求将在必要时由映射器而不是默认Servlet重定向(添加尾随斜杠)。这更有效,但具有确认上下文路径存在的副作用。如果未指定,则使用默认值false。
发布于 2013-12-22 20:21:03
您的应用程序的web.xml似乎有一个到"/*"的映射。servlet映射到"/*"会导致tomcat按原样将请求传递给web应用程序(即不重定向)。
要正确地重定向,必须将"/*"映射更改为"/",后者表示默认的servlet。
发布于 2012-06-16 02:02:21
Tomcat会自动添加一个尾随斜杠。只需使用Tomcat提供的示例应用程序对其进行测试。
如果-由于某些特殊配置-它没有,我会编写一个过滤器来检查查询字符串,并根据应用程序的需要进行重定向。很多时候,无论如何这都是需要的(做http->https重定向,等等)
https://stackoverflow.com/questions/11055608
复制相似问题