You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat从8.5.24升级至9.0.27后含连续双斜杠URL报404求助

解决Tomcat 9.0.27升级后含连续双斜杠URL返回404的问题

我之前升级Tomcat版本时也碰到过几乎一模一样的问题,咱们来梳理下原因和解决办法:

核心原因

Tomcat 9.x版本默认启用了URI规范化机制,会自动将URL中的连续多斜杠(比如//)合并为单个斜杠(/)。而你在Tomcat 8.5.24时的应用是依赖原始含双斜杠的URL路径进行路由匹配的,所以规范化后就找不到对应的资源,返回404。这个调整属于底层请求处理逻辑的默认行为变更,可能没有单独在版本发布说明中高亮标注。

解决方案

方案1:全局禁用URI规范化(推荐)

修改Tomcat安装目录下conf/server.xml中的<Connector>节点,添加normalizeUri="false"属性,关闭自动合并斜杠的功能:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           normalizeUri="false" />

添加完成后重启Tomcat,再测试你的双斜杠URL应该就能正常访问了。

方案2:局部处理(针对单个应用)

如果不想修改全局Tomcat配置,也可以给你的应用添加一个自定义Filter,手动保留原始请求URI中的双斜杠:

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.IOException;

public class PreserveDoubleSlashFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        String originalUri = req.getRequestURI();
        // 包装请求,返回原始未规范化的URI
        HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(req) {
            @Override
            public String getRequestURI() {
                return originalUri;
            }
        };
        chain.doFilter(wrapper, response);
    }

    @Override
    public void destroy() {}
}

然后在应用的web.xml中注册这个Filter:

<filter>
    <filter-name>PreserveDoubleSlashFilter</filter-name>
    <filter-class>com.yourpackage.PreserveDoubleSlashFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PreserveDoubleSlashFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

注意事项

  • 测试时一定要清空浏览器缓存或者使用无痕模式,避免旧的缓存请求干扰结果
  • 如果你的应用使用了框架路由(比如Spring MVC),还要确认框架本身是否有额外的URL规范化逻辑,可能需要同步调整框架配置

内容的提问来源于stack exchange,提问作者aatish bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:56:22