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

React/Vite项目npm run start后动态路由页面404问题求助

React/Vite生产环境路由404问题解决方法

你遇到的是单页应用(SPA)客户端路由的典型问题:开发环境下Vite内置服务器会自动处理所有路由请求,转发到index.html;但生产环境用serve静态服务器时,它只会查找对应路径的物理文件,像/redefinir-senha/code这种动态路由没有对应的文件,所以返回404。

以下是两种直接解决的方案:

方案1:修改serve启动参数

直接在package.json的start脚本中给serve添加--single参数,强制服务器把所有未匹配到文件的请求都转发到index.html:

"scripts": {
    "start": "vite build && serve dist --single",
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
    "preview": "vite preview"
}

方案2:配置Vite的路由 fallback(推荐)

在项目根目录的vite.config.js(或vite.config.ts)中添加historyApiFallback配置,同时确保构建输出正确:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  // 开发环境路由 fallback
  server: {
    historyApiFallback: true
  },
  // 预览环境路由 fallback
  preview: {
    historyApiFallback: true
  },
  build: {
    rollupOptions: {
      output: {
        // 避免代码分割导致的路径问题(可选,根据项目情况调整)
        manualChunks: undefined
      }
    }
  }
})

这个配置会让Vite在开发、预览和构建阶段都处理SPA路由的跳转逻辑,确保所有路由请求都指向index.html。

如果后续切换到其他生产服务器(如Nginx、Apache),也需要对应配置路由 fallback:

  • Nginx:在站点配置中添加try_files $uri $uri/ /index.html;
  • Apache:在项目根目录的.htaccess中添加RewriteRule ^ index.html [L]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:22:13