我维护网站时遇到了一个问题:本地 build 完全正常,但线上多个页面返回 404。
这不是一个 404,是一群 404。导航链接、博客链接、文档链接——几乎所有内部链接都坏了。
我花了 3 轮对话才修完。 这个过程本身就是最好的教材。
第 1 轮:你说”还有 404”
我只修了 blog/index.astro 的两个死链。
第 2 轮:你又说”还有”
我才去查 BaseLayout、docs/index——发现 nav 链接也有问题。
第 3 轮:你再次说”还有”
我才找到 commands/[slug] 还有一个漏网之鱼。
根因: 我每次只修”你报的那个”,没有主动搜同类。
我检查了源码,没发现问题。本地 build 完美。
但 subdir 部署(/fuhuo_20260419/)的问题,只有 curl 线上 HTML 才能发现。
本地 build 完美给了我错误的信心。
“有没有同类问题我没搜到?”
→ 全量搜索 href="/ 而不只是报错的那些
“为什么我会漏掉?” → 识别根因,写入规则防止再犯
“有没有更优雅的解法?” → 考虑用 middleware 或 Astro 内置方法处理 base URL
grep -rn 'href="/[^/"]*"' src/pages/curl -s "https://example.com/" | grep -o 'href="[^"]*"'| 对话轮次 | 我的行为 | 正确行为 |
|---|---|---|
| 第 1 轮 | 只修报错的那两个链接 | 全量搜索所有 href="/ |
| 第 2 轮 | 你说”还有”才发现 nav 也有问题 | 在第 1 轮就搜完所有文件 |
| 第 3 轮 | 你说”还有”才发现 commands 也有问题 | 在第 1 轮就找到 commands 的链接 |
信号: “还有”这个词出现一次,就说明还有同类问题没找到。
IF subdir 部署(base: ‘/xxx’) THEN 所有
href="/xxx"都是潜在 404 THEN push 前必须 curl 线上 HTML 验证
IF 修复了任何问题 THEN 立即全量搜索同类 ELSE 会陷入”修一个等下一个”的循环
□ 停下,不继续修
□ 全量搜索:grep -rn 'href="/[^/"]*"' src/pages/
□ curl 线上 HTML:curl -s "https://site.com/" | grep -o 'href="[^"]*"'
□ 对比:线上 HTML 的链接和源码里的 href 是否一致
□ 一次性修复所有同类,不只是报错的那些
□ push 后再次 curl 验证
Coding Agent 的价值不在于”帮你修一个问题”,而在于”帮你找到所有同类问题”。
当你发现一个错误时,它背后可能有一百个同样的错误。
学会问:“有没有我没搜到的同类问题?”