博客文章
一次文档 404 是如何定位到同步副本链路的
复盘一次站点 404 排障过程,说明为什么 docs 是事实源、site/docs 只是同步副本,以及这个边界为什么不能破坏。
静态文档站最容易出现的一类错觉是:页面是 Markdown 写的,所以只要文件存在,页面就应该存在。
但当前项目不是“直接渲染根目录文档”的结构,而是两段式:
- 根目录
docs/是唯一事实源 site/docs/是给 VitePress 和 Docker 使用的同步副本
一旦有人把这个边界弄混,就很容易出现下面这些问题:
- 首页 404
- 某个文档页 404
- 开发模式返回异常内容
- Docker 吃到旧副本
为什么会这样
因为 VitePress 当前实际消费的是 site/docs/,不是根目录 docs/。
如果你只改了根目录文档,但没有同步副本,运行站点时看到的就不是最新内容。
如果你把 site/docs 改成了不合适的链接形式,开发模式甚至可能连导入行为都不稳定。
当前项目最终采用的约束
- 根目录
docs/是唯一手工维护入口 site/docs/只能由同步脚本生成- 站点和 Docker 都只消费
site/里的内容
这个约束看起来多了一步,但它换来的是:
- 目录职责清晰
- 站点壳层可独立启动
- Docker 部署目录清晰
- 发布链路更可控