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

SpringBoot访问/及非/mealplanner/路径返回index.html的配置问题

配置失效核心原因

  1. 你添加的@EnableWebMvc注解会完全覆盖SpringBoot默认的Web自动配置,其中包含静态资源路径映射规则,因此forward请求找不到classpath:/static下的index.html
  2. addViewController仅支持固定路径映射,无法适配你需要匹配「除/mealplanner/前缀外所有路径」的需求

可行解决方案

步骤1:修复静态资源映射

如果你没有自定义拦截器、跨域等强依赖@EnableWebMvc的需求,直接删除该注解即可恢复SpringBoot默认静态资源映射规则;如果必须保留@EnableWebMvc,在你的WebConfig类中补充静态资源映射配置:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    // 补充静态资源映射
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");
    }
}

步骤2:新增SPA路由转发控制器

利用SpringMVC路径匹配优先级(精确匹配 > 通配符匹配)的特性,/mealplanner/前缀的业务接口会优先命中你的业务Controller,其余路径全部转发到index.html,全程不会改变浏览器URL:

@Controller
public class SpaRouteController {
    // 匹配根路径、所有不带后缀的路径(排除js/css/png等静态资源请求)
    @RequestMapping(value = {"/", "/**/{path:[^\\.]*}"})
    public String forwardToIndex() {
        return "forward:/index.html";
    }
}

验证效果

  • 访问http://localhost:80:URL保持不变,正常加载Angular首页面
  • 访问http://localhost:80/user/info等Angular路由路径:URL保持不变,正常加载对应路由页面
  • 访问http://localhost:80/mealplanner/xxx:正常命中业务接口,不会被转发到静态页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:15:02