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

Spring Boot引入CSS报错No match for GET /css/s.css如何解决

Spring Boot 静态CSS资源加载404问题排查与解决

你遇到的o.s.web.servlet.PageNotFound: No match for GET /css/s.css报错,即使配置了Security放行、路径写法正确、目录结构符合规范,通常由以下几个高频原因导致,按优先级排查即可:

1. Spring Security 规则配置顺序错误

这是90%同类问题的根因
Spring Security的权限匹配规则是自上而下顺序执行,匹配到第一条符合规则就终止后续判断。如果你把.antMatchers("/css/**").permitAll()写在了.anyRequest().authenticated()这类全量拦截规则的后面,放行规则永远不会生效。
正确配置示例:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        // 所有放行规则必须写在全量拦截规则之前
        .antMatchers("/css/**", "/js/**", "/images/**").permitAll()
        .antMatchers("/home").permitAll()
        // 全量拦截规则放在规则列表最后
        .anyRequest().authenticated()
        .and()
        .formLogin()
        // 其余业务配置省略
}

如果是Spring Security 5.8+/Spring Boot 3版本,用新APIrequestMatchers替代旧版antMatchers即可,顺序要求完全一致。

2. 自定义MVC配置覆盖了默认静态资源映射

Spring Boot默认会将classpath:/static、classpath:/public、classpath:/resources、classpath:/META-INF/resources目录下的内容映射为根路径可直接访问的静态资源,以下两种操作会导致默认映射失效:

  • 自定义配置类继承了WebMvcConfigurationSupport,且没有手动追加静态资源映射
  • 实现WebMvcConfigurer接口重写addResourceHandlers方法时,没有保留默认静态资源路径映射
    修复方式:优先选择实现WebMvcConfigurer接口而非继承WebMvcConfigurationSupport做MVC自定义配置,重写资源映射时追加默认路径规则:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    // 自定义业务静态资源映射(如有需要可保留)
    registry.addResourceHandler("/upload/**")
            .addResourceLocations("file:./upload/");
    // 补充默认静态资源映射规则
    registry.addResourceHandler("/**")
            .addResourceLocations("classpath:/static/")
            .addResourceLocations("classpath:/public/")
            .addResourceLocations("classpath:/resources/");
}

3. 静态资源未被编译到项目输出目录

直接打开项目编译输出目录检查:Maven项目看target/classes/static/css路径下是否存在s.css文件,Gradle项目看build/resources/main/static/css路径:

  • 如果文件不存在,说明构建工具没有将静态资源打包到输出目录,检查pom.xml/build.gradle中的resources配置,是否存在过滤规则排除了css类型文件
  • 排除配置问题后,执行mvn clean compile或在IDE中触发Rebuild Project重新构建项目即可

4. 其他低概率诱因

  • 检查是否配置了自定义拦截器/过滤器,若有需要在拦截器配置中通过excludePathPatterns("/css/**")排除静态资源路径
  • 检查application配置文件中是否手动配置了spring.mvc.static-path-pattern或spring.web.resources.static-locations修改了默认静态资源规则,若有自定义配置需要和前端引入路径、Security放行规则保持一致
  • 确认css文件名、路径没有拼写错误,路径匹配大小写敏感(尤其是部署到Linux环境时)

内容的提问来源于stack exchange,提问作者Богдан Харашук

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:27:46