从 Spring 6 开始,默认情况下,带有尾部斜杠的 URL 与没有斜杠的 URL 区分开来。无论出于何种原因,这意味着现在
https://host.org/subdirectory/
(使用尾部斜杠使 href 相对于 /subdirectory
)指向任何内容,即使有 /subdirectory/index.html
或 /subdirectory/index.jsp
。这可以通过配置选项来缓解。 本教程 然而,这称为“在我们完全适应我们的应用程序之前授予向后兼容性”,并且相关选项(例如PathMatchConfigurer.setUseTrailingSlashMatch(boolean)
)同时被标记为过时。剩下的就是一个冗长的网络过滤器,它明确删除了尾部的斜杠。
问题:在静态资源的情况下尾部斜线 URL 的 404 是将 Spring 与 JSP 一起使用的产物吗?如果不是,目前推荐在
index.[html,jsp,...]
中使用相对 hrefs 的方法是什么(除了不可重定位的 <base>
)?将文件名添加到 URL,如 https://host.org/subdirectory/index.jsp
所示,实际上实现了上述过滤器,或者可能有一些选项仅适用于静态资源,这使得 Spring 忽略了它们的尾部斜杠?