You need to enable JavaScript to run this app. Spring Boot整合React项目访问前端路由返回404错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot整合React项目访问前端路由返回404错误如何解决

问题根因

你遇到的404问题是因为React使用了BrowserRouter模式,前端路由完全由客户端控制,后端没有对应路径的映射规则,当用户直接访问/login这类前端路由或刷新页面时,Spring Boot找不到对应资源就会返回404。你提供的maven打包配置是正常的,无需修改。

解决方案

方案一:配置Spring MVC视图转发规则(推荐)

新增Spring MVC配置类,将所有非静态资源、非API接口的请求转发到React的入口index.html,代码如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebRouteConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 匹配单级路径,自动排除带后缀的静态资源(js/css/png等)
        registry.addViewController("/{path:[^\\.]*}")
                .setViewName("forward:/index.html");
        // 匹配多级前端路由,比如/user/info/settings这类多层路径
        registry.addViewController("/**/{path:[^\\.]*}")
                .setViewName("forward:/index.html");
    }
}

Spring MVC会优先匹配你定义的/api开头的接口映射,只有没有匹配到对应接口/静态资源的请求才会走转发规则,不会影响后端接口调用。

方案二:自定义404错误转发

如果不想写路由匹配规则,也可以通过自定义错误处理器,把所有404请求转发到index.html:

import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class FrontendErrorController implements ErrorController {
    @RequestMapping("/error")
    public String handleError(HttpServletRequest request) {
        Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
        if (HttpStatus.NOT_FOUND.value() == statusCode) {
            return "forward:/index.html";
        }
        return "请求错误,状态码:" + statusCode;
    }
}
注意事项
  • 如果项目集成了Spring Security,需要将前端路由相关路径放行,避免被权限拦截,/api开头的接口保留原有权限控制逻辑即可。
  • 如果可以接受URL带#前缀,也可以将React的路由模式改为HashRouter,无需后端配置即可解决404问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 04:15:01