Blog · 2026-08-30
你的站可能正在白烧爬取预算:soft 404 与 Cloudflare Pages 的 SPA fallback 陷阱
坏网址一律回 200 加一整份首页,不是「反正有东西」,而是爬虫把抓取额度花在垃圾网址上——一个 404.html 就能修,修完还会看到一批原本看不见的问题。
新站收录一直上不去,你以为是内容不够好。其实还有一种可能:所有不存在的网址——失效的旧外连、打错字的内链、扫描器乱试的路径——你的站全部回 200,还奉上一整份首页。爬虫每天来,额度全花在这些垃圾请求上,真正该抓的页面反而排不进去。
病征:curl 一个不存在的路径,看它回什么
我们手上一个 60 多页的内容站,长期苦于爬取量不足。健检时 curl 了几个确定不存在的路径:/random-xyz、/rss.xml、/llms.txt,全部回 HTTP 200,body 是完整的首页 HTML,87KB,canonical 指向 /。
这就是 soft 404:网址不存在,服务器却说「有」。它有两个阴险的特性:
- 监控全绿。uptime 检查、点击测试都拿到 200,永远不会告警。
- 连你自己都会被骗。想确认站上有没有
llms.txt,curl 回 200 就当它存在——其实拿到的是首页。我们真的被这样骗过一次。
成因很单纯:Cloudflare Pages 的建置产出根目录里没有 404.html 时,会自动退回 single-page application 模式,未命中的路径一律回 index.html 加 200。对真正的 SPA 这是功能;对多页静态站这是灾难,而且是无声的默认行为。
为什么这在烧爬取预算
「首页 canonical 指向 /,坏网址不会被收录成重复内容,不就没事?」
收录确实挡住了,爬取没有。canonical 写在 HTML 里,Googlebot 得先下载整份 87KB 首页才读得到它——每个坏网址都是一次完整下载。而坏网址的来源比想像中多:别人打错的外部连结、改版留下的旧路径、扫描器固定会踩的 /feed、/.env 之类。
更糟的是,回 200 等于告诉搜寻引擎「这个网址活著」,它会留在排程里被反复重抓;真正的 404 则会被逐步降低重抓频率。Google 的爬取预算管理指南也把 soft 404 明列在浪费爬取资源的因素里。对大站这是杂讯;对一个爬取量本来就不足的站,这是把救命的额度倒进水沟。
修法:放一个 404.html,让平台退出 SPA 模式
修法便宜到不成比例:在建置产出根目录放一个真的 404.html,Cloudflare Pages 侦测到它就切回静态站模式,未命中路径改回真正的 HTTP 404。
我们把 404 页做进产生器而不是手写孤儿档:用站上同一套 CSS 与导览,放上主要页面的连结,让误入的真人有路可走。
实测结果:
- 坏网址:200 / 87KB → 404 / 34KB
- 站上 67 个真实页面全数维持 200,零误伤
- 换 Googlebot 的 UA 重打一轮,一样拿到 404
验证要验三面:坏网址变 404、好网址没跟著坏、爬虫身分看到的跟你一样。只验第一项就收工,是在赌。
修好隔天,死连结现形
soft 404 修好的隔天,自己人点导览列就撞上 404。追查发现首页导览列有两条存在已久的死连结:一条指向从头到尾没做出来的页面;另一条多包了一层目录——正确路径是 /how-to-pick/,连结却写成 /guide/how-to-pick/。
为什么从来没人发现?因为在 soft 404 时代,点下去回 200 和首页,看起来像「怪怪的但能用」。404 修好,这些连结第一次真的以 404 的样子出现在人眼前。根因也很典型:首页手工维护、内页导览由产生器生成,两边各自演化就走钟了。
所以别把修好 404 当结案——它是让旧问题现形的开始。接下来几天,预期会捞到一批原本隐形的坏连结。
把检查做成部署闸门,并先证明它会叫
人眼抓不到的问题,就不该继续靠人眼。我们在部署流程加了一道死连结闸门:扫描建置产出里每一条站内 href,只要指不到实际文件、又没有转址规则接住,就直接挡下这次部署。
关键在负面测试:故意把已知的死连结插回去,确认闸门真的会挡。没看过它挡下东西的闸门,只是让人安心的装饰。
同一轮全站扫描还捞出另一个肉眼看不见的问题:27 页的标题超过 30 个全形字(含首页的 33.5 字),而繁中搜寻结果页大约 28–30 字就截断,多出来的部分等于白写。逐页压进 30 字内——保留品牌与核心关键句、只砍后段赘语——改完超标归零。
结语
soft 404 难缠不在修——一个 404.html 就解决——而在它全程无症状:监控绿灯、点击有页面、连检查指令都会被骗。如果你的站挂在 Cloudflare Pages 或任何带 SPA fallback 的平台,现在就 curl 一个不存在的路径看它回什么;回 200,你就找到收录不动的其中一个原因了。修完记得把死连结扫描做成部署闸门,再用负面测试证明它会动。这类「看起来没坏所以没人修」的问题,我们处理过不少;想确认自己站上还藏著哪些,欢迎来找我们聊聊。
这类技术债,我们做成了服务
soft 404 这种问题不会让网站挂掉,只会让你的爬取预算安静地烧完,然后某天发现新页一直不被收录。
- 站台架构与技术 SEO:状态码、canonical、sitemap、robots 一次对齐
- 索引监控:逐页查收录状态,找出被爬但没被收的页
- 内容产出:把爬取预算花在有内容的页面上
| 方案 | 费用 | 内容 |
|---|---|---|
| 建置 | $900 USDT | 站台架构、技术 SEO、初始内容 |
| 月维护 | $400 USDT / 月 | 内容产出、内链维护、索引监控 |
规格在 iGaming SEO 建站服务。