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

Nginx部署React应用后刷新页面返回404错误如何解决

React部署后刷新页面404问题解决方案

问题核心原因

这是客户端路由的典型问题:React项目如果使用BrowserRouter模式的路由,所有路由跳转逻辑都是在前端通过JS执行的,服务器上并不存在对应路由路径的真实静态文件。当你刷新页面时,浏览器会直接向服务器请求当前路径对应的资源,服务器找不到对应文件就会返回404错误。

各服务器环境修复方案

1. Nginx 配置

修改你站点的Nginx配置文件,在location /块中添加try_files规则,把所有请求都重定向到index.html,交给前端路由处理:

location / {
  root /usr/share/nginx/html; # 替换为你的React打包文件存放路径
  index index.html index.htm;
  # 新增下面这行
  try_files $uri $uri/ /index.html;
}

修改配置后执行nginx -s reload重载配置即可生效。

2. Apache 配置

在React打包后的build目录下新建.htaccess文件,写入以下规则:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

注意要确保Apache已经开启mod_rewrite模块。

3. Caddy 配置

修改Caddyfile,在站点配置块中添加try_files规则:

你的域名 {
  root * /path/to/your/react/build # 替换为打包文件路径
  encode gzip
  # 新增下面这行
  try_files {path} /index.html
  file_server
}

修改后重启Caddy服务即可。

4. 静态托管平台配置

如果是用云服务的静态托管能力部署,不需要改服务器配置,在托管平台的配置页找到重定向/回退规则,配置所有请求都回退到index.html即可:

  • 腾讯云COS/阿里云OSS:配置404页面自定义为/index.html,HTTP响应码设为200
  • 其他托管平台:配置通配符规则/*指向/index.html,响应码200

备选临时方案

如果暂时没有修改服务器配置的权限,可以把React路由的BrowserRouter替换为HashRouter,这种模式路由会携带#前缀,所有路由请求都不会发送到服务器,自然不会出现404问题,但URL里会多出#字符,美观性和SEO效果略差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:15:03