站点从根域搬到 /blog/,首页能打开,一点导航就跳到 https://example.com/about 并返回 404,控制台里能看出发出去的地址根本没带 /blog。乍看像缓存或者权限的锅,追下去往往不是。

// vite.config.js
export default { base: '/blog/' }
// router
createWebHistory(import.meta.env.BASE_URL)

追下去是这么回事:打包配置里的 base 还是默认的斜杠,路由实例的基址也按根路径算,拼出来的地址自然把 /blog 丢了。部署目录一变,这两处都要跟着改,只改一个照样跳错。

「打包 base 路径」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

具体做法是,把构建配置里的 base 改成 /blog/,末尾斜杠不能省,少了它相对资源会解析到上一级;路由的 history 基址直接用环境变量里的 BASE_URL,别手写字符串;全局搜一遍写死的绝对路径,public 目录里的静态引用也要带上这个前缀。

验收就看一点,从 /blog/ 点任意菜单,地址栏一直停在 /blog 下,直接刷新也不会 404。

作者 9823189