React 应用在 Nginx 上部署后,直接访问子路由(如 /privacy-policy)返回 404,根本原因是服务端未将所有前端路由请求回退到 index.html,导致 React Router 的客户端路由无法生效。
react 应用在 nginx 上部署后,直接访问子路由(如 `/privacy-policy`)返回 404,根本原因是服务端未将所有前端路由请求回退到 `index.html`,导致 react router 的客户端路由无法生效。
这是一个典型的服务端路由与前端路由不匹配问题。React Router(v6)是客户端路由,它依赖浏览器 History API 在单页应用中切换视图,但前提是:当用户直接访问 /privacy-policy 或刷新该页面时,Nginx 必须将该请求始终返回 index.html,由 React 应用自行解析路径并渲染对应组件。否则,Nginx 会尝试查找物理存在的 /privacy-policy 文件或目录,自然返回 404。
⚠️ 注意:_redirects 文件(如答案所提)仅适用于 Netlify 等静态托管平台,对 Nginx 完全无效——这是关键误区。你的项目部署在 Nginx,必须配置 Nginx 服务器规则,而非添加前端文件。
✅ 正确解决方案:修改 Nginx 配置,启用 try_files 回退机制:
server { listen 80; server_name shreejisecuresofttech.com; root /var/www/your-react-build-folder; # 指向 build 输出目录(含 index.html) index index.html; location / { try_files $uri $uri/ /index.html; } # 可选:为静态资源(js/css/img)启用缓存 location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; }}
? 关键说明:
? 额外建议:
完成上述 Nginx 配置后,无论用户从首页导航还是直接输入 https://shreejisecuresofttech.com/privacy-policy,都将正常加载 <PrivacyPolicy /> 组件,彻底解决 404 问题。