问题出现得很突然,日志倒是留得挺全。搜索页模板半年前就加了 noindex,robots 也挡了带 q 参数的地址,上周用 site 查询仍有 6000 多条结果,标题全是「搜索某某的结果」。

刚开始盯着「robots 屏蔽后蜘蛛读不到 noindex,URL 长期停在已发现」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。noindex 只对新抓取生效,历史 URL 要重新抓取才会更新。另一种情况是页面被内链和外部引用反复发现,抓取后读到的还是旧缓存。

少数情况下是搜索结果页有分页变体,规则只覆盖了第一页。

动手时先确认响应头和 meta 里的指令

curl -sI 'https://www.example.com/search?q=test' | grep -i x-robots

然后检查分页变体是否也带 noindex

curl -s 'https://www.example.com/search?q=test&page=2' | grep -i noindex

接着核对 robots 对搜索路径的写法

curl -s https://www.example.com/robots.txt | grep -i search

等前面都确认过,再用网址移除清理已收录样本

site:www.example.com/search?q=

改完先别撤,确认这几项。搜索结果页响应头带 noindex,两周后 site 查询只剩个位数,日志里搜索页抓取不再回流。

这里还有个坑。屏蔽抓取和 noindex 只能选一个方向,先让蜘蛛读到 noindex 再考虑限流,顺序反了会拖很久。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189