站点自定义 404 页面做得比较完整,带了导航、推荐和搜索框,正文有一千多字,状态码确实是 404,但蜘蛛反复抓取,索引报告里这批地址一直不消失。

一开始怀疑是「404 模板没有加 noindex,状态码之外的信号不明确」,查了一圈,方向不对。

排查方向其实有限,先把可能性排一排。404 页面内容过丰富,被蜘蛛当成正常落地页反复重试。还有一种是页面里的推荐链接把蜘蛛带回站内,形成循环抓取。

少数情况下是软 404 与真 404 混在一起,报告无法区分。

先确认状态码与正文长度

curl -s -o NUL -w "%{http_code} %{size_download}\n" https://www.example.com/not-exist-page/

随后看 404 页面是否带 noindex

curl -sI https://www.example.com/not-exist-page/ | findstr /i x-robots

给 404 模板加 noindex 并精简推荐位

echo '<meta name="robots" content="noindex">';

等前面都确认过,再观察报告里该类地址的数量

curl -s https://www.example.com/not-exist-page/ | findstr /i "<title>"

恢复的判定其实很直接。404 页加 noindex 并收掉大部分推荐后,这批地址在报告里逐步清零,抓取量也回落。

补一句。404 页面越丰富,蜘蛛越愿意反复来,状态码正确只是第一步,还要让它明白这里没有内容。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189