神奇的首页404事件
一大清早刚睁眼,拿起手机就看到 Google Search Console 头发来的一封“贴心”邮件:“未找到 (404)——您的网页无法被编入索引”。
我瞬间就清醒了。
404?不能吧?我赶紧打开浏览器输入 bddxg.top,页面刷的一下就出来了,排版精美,内容完整,运行得好好的!我这不天天看着吗,哪来的 404?
难道是 Google 爬虫今天清早抽风,眼神不太好?
怀着一丝不解与对科技的敬畏,我果断把这套“幽灵 404 事件”扔给了 AI 排查。
AI 的“破案”现场

AI 介入后,迅速在服务器上跑了一圈对比,结论直接把我整笑了:
“首页 404,但网页渲染出了正确的页面。”
原来,我用的是 VitePress 搭建的单页面应用(SPA)。当用户(或 Google 爬虫)请求 https://bddxg.top/ 时,Nginx 服务器在底层找不到对应的静态文件,于是果断抛出了一个 HTTP 404 状态码,并顺手把配置好的错误页面——404.html 扔了出去。
奇迹就发生在这关键的一步:
服务器端:理直气壮地回传 HTTP 404,表示“兄弟,没这文件,这是错误壳”。
客户端(浏览器):收到 404.html 后,里面的 app.js 脚本开始静默加载。它抬头一看浏览器地址栏还是 /,心里想:“哦,原来你要看首页啊!” 于是它立刻发起了异步请求(200 OK),现场把完整首页给渲染了出来!

打开 F12 开发者工具一拉请求列表,真相大白:

第一条文档请求状态码赫然写着 404,而下面一排排加载的资源全是 200!
也就是说:人类用户访问,浏览器默默帮你打好了补丁,你看到的是完美首页;Google 爬虫访问,人家只认第一个 HTTP 状态码,看到 404 直接打卡下班,拒绝收录。
这简直就是程序员界的“排水管奇观”——写了一大堆业务代码不管用,最后硬是靠着 Bug 歪打正着地运行了起来!

某种意义上,这套机制甚至实现了某种赛博阴阳平衡:
对人:热情的招待,“客官里面请,首页奉上!”
对爬虫:冷酷的拒绝,“404,走过路过不要错过,反正别来收录我。”
一行代码解决
知道原因后修复倒也简单,就是给 Nginx 改个重定向配置:
try_files $uri =404; # 之前的神仙逻辑
try_files $uri $uri/ =404; # 改成正确修改,nginx -s reload,终端里跑个 curl 验证,终于吐出了久违的 HTTP/2 200。
折腾完这一趟,看着终于恢复正常的网络请求,我不禁感叹:互联网的底层,到底还有多少靠着“负负得正”在顽强运转的奇迹啊……

📌 评论规则
需要 GitHub 账号登录 禁止发布广告、无关内容 请保持友善讨论