发布日期: 2026年3月24日
版本标签: v2.0
提交哈希: afcd491
V2.0 是一个重要的修复版本,主要解决了 React SPA 在 GitHub Pages 和 Vercel 双平台部署时遇到的子页面 404 问题和图片显示路径问题。现在网站在两大平台都能完美运行!
问题描述:
- 首页可以正常访问
- 从首页导航到子页面(如
/about)正常 - 直接访问子页面或刷新子页面时出现 404 错误
根本原因:
React Router 使用 History 模式,而 GitHub Pages 和 Vercel 默认情况下对未知路径返回 404,而不是返回 index.html 让前端路由处理。
解决方案:
-
GitHub Pages: 使用
404.html配合sessionStorage重定向方案- 保存当前路径到 sessionStorage
- 重定向到首页并恢复原始路径
-
Vercel: 使用
vercel.json配置路由重写规则- 所有未知路径都指向
index.html - 静态资源优先从文件系统获取
- 所有未知路径都指向
修改文件:
404.html- 重定向逻辑优化vercel.json- 添加路由配置index.html- 处理重定向回来的逻辑
问题描述:
- 子页面(如
/about)中的图片无法显示 - 浏览器控制台报 404 错误
根本原因:
- 图片路径使用绝对路径
/visityunfu/images/... - 在 Vercel 上此路径不存在导致 404
- 使用相对路径
images/...时,子页面会错误解析为/about/images/...
解决方案:
- 步骤 1: 修改
assets/index-DRhF-XhE.js,将所有图片路径从/visityunfu/images/改为相对路径images/ - 步骤 2: 在
index.html中添加动态<base>标签(function() { var path = window.location.pathname; var base = document.createElement('base'); if (path.indexOf('/visityunfu') === 0) { base.href = '/visityunfu/'; } else { base.href = '/'; } document.head.appendChild(base); })();
修改文件:
index.html- 添加动态 base 标签assets/index-DRhF-XhE.js- 175 处图片路径改为相对路径
| 文件 | 修改类型 | 说明 |
|---|---|---|
404.html |
重写 | SPA 重定向逻辑,支持 GitHub Pages |
index.html |
修改 | 添加动态 base 标签和重定向处理 |
vercel.json |
修改 | 添加路由重写规则 |
assets/index-DRhF-XhE.js |
修改 | 175 处图片路径改为相对路径 |
| 平台 | 状态 | 访问地址 |
|---|---|---|
| GitHub Pages | ✅ 已修复 | https://makermingone.github.io/visityunfu/ |
| Vercel | ✅ 已修复 | (自动部署) |
- 首页正常访问
- 点击导航到子页面正常
- 直接访问子页面不 404
- 刷新子页面不 404
- 子页面图片正常显示
- 首页正常访问
- 点击导航到子页面正常
- 直接访问子页面不 404
- 刷新子页面不 404
- 子页面图片正常显示
- 用户访问
/about - GitHub Pages 返回
404.html 404.html保存当前路径到sessionStorage- 重定向到首页
/?redirect=/about index.html读取sessionStorage并恢复 URL- React Router 接管渲染
/about页面
- 动态检测当前域名(是否包含
/visityunfu) - 自动设置
<base>标签 - 相对路径
images/xxx.jpg自动拼接为正确绝对路径 - GitHub Pages:
/visityunfu/images/xxx.jpg - Vercel:
/images/xxx.jpg
感谢使用 Visit Yunfu 云浮文旅网站!如有问题欢迎提交 Issue。
完整变更对比: v1.0...v2.0