问题出现得很突然,日志倒是留得挺全。搜索页模板半年前就加了 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 再考虑限流,顺序反了会拖很久。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
