Vite子路由部署后无法访问解决方法
时间:2026-03-03 11:57:45 459浏览 收藏
Vite 构建的单页应用部署后子路由(如 `/login`)直接访问报 404 或跳回首页,根本原因在于静态服务器未启用 SPA 路由回退机制——开发时 Vite 自动处理了 History 模式下的路径兜底,但生产环境需手动配置服务端将所有非静态资源请求重写为 `index.html`,让前端路由接管;本文详解 Vercel、Netlify 和 Nginx 的标准重写配置,并对比分析 Hash 模式的临时替代方案及关键注意事项,助你彻底解决路由不可直达、无法刷新、收藏失效等痛点,真正实现语义化 URL 的开箱即用。

Vite 构建的单页应用(SPA)部署到静态托管平台(如 Vercel、Netlify、Nginx)后,直接访问 /login 等子路径返回 404 或跳回首页,根本原因是服务端未正确配置 SPA 路由回退机制。
Vite 构建的单页应用(SPA)部署到静态托管平台(如 Vercel、Netlify、Nginx)后,直接访问 `/login` 等子路径返回 404 或跳回首页,根本原因是服务端未正确配置 SPA 路由回退机制。
当你在本地开发时(npm run dev),Vite 开发服务器默认启用 HTML 5 History 模式路由的自动回退——即所有未知路径均返回 index.html,再由前端路由(如 Vue Router 或 React Router)接管并渲染对应页面。但生产环境的静态服务器默认不具备该能力:它会严格按文件路径查找资源。例如请求 https://your-site.com/login,服务器会尝试寻找 ./login/index.html 或 ./login.html,而你的构建产物中通常只有 index.html 和静态资源,因此返回 404 或默认首页。
✅ 正确解决方案(二选一)
方案一:配置服务端路由回退(推荐,保留 History 模式)
确保所有非资源请求(即非 .js/.css/.png 等)均返回 index.html,让前端路由接管。
Vercel(你当前使用的平台):在项目根目录添加 vercel.json:
{ "rewrites": [ { "source": "/(.*)", "destination": "/index.html" } ] }✅ 部署后,所有路径(如 /login, /dashboard)都会加载 index.html,Vue Router/React Router 即可正常解析。
Netlify:在根目录创建 _redirects 文件:
/* /index.html 200
Nginx(自托管):在 location 块中添加:
location / { try_files $uri $uri/ /index.html; }
方案二:改用 Hash 模式路由(快速验证,不推荐长期使用)
修改前端路由配置,避免依赖服务端支持:
Vue Router(v4):
// router/index.ts import { createRouter, createWebHashHistory } from 'vue-router' const router = createRouter({ history: createWebHashHistory(), // ← 替换为 hash 模式 routes: [/* ... */] })React Router(v6+):
import { HashRouter } from 'react-router-dom' ReactDOM.createRoot(document.getElementById('root')!).render( <HashRouter> {/* ← 替换 BrowserRouter */} <App /> </HashRouter> )此时 URL 变为 https://yoursite.com/#/login,无需服务端配置,但 SEO 和分享体验较差。
⚠️ 注意事项
- 检查 vite.config.ts 中 base 配置是否与部署路径匹配(如部署在子路径 /app/,需设 base: '/app/');
- 确保构建产物中 index.html 的
-
502 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
277 收藏
-
325 收藏
-
300 收藏
-
223 收藏
-
495 收藏
-
139 收藏
-
276 收藏
-
165 收藏
-
235 收藏
-
189 收藏
-
277 收藏
-
245 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习