站点路径里有一批文章 slug 以 search 开头,robots.txt 里写了 Disallow: /search*,上线一周后这批文章在索引里消失,日志里也看不到抓取记录。

真正麻烦的地方在于,几个原因的现象几乎一样。通配符按前缀匹配,/search* 同时命中了文章目录;规则写在 User-agent: * 分组下,对全部蜘蛛生效;测试时只验证了搜索页,没有用文章 URL 反查;CDN 缓存了旧 robots,改完规则蜘蛛读到的还是前一版。

先确认规则命中的实际路径

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

随后用测试工具验证单条 URL 是否被挡

curl -s https://www.example.com/search-engine-guide/ | findstr /i "<title>"

接着把规则收窄到带参数的搜索地址

Disallow: /?s=

剩下的就是清掉各节点的 robots 缓存

curl -X PURGE https://www.example.com/robots.txt

改之前先确认了最近有没有人动过配置,避免白查一遍。

恢复的判定其实很直接。规则收窄后三天,这批文章的抓取记录重新出现,两周内回到索引,搜索页也没有被大量收录。

补一句。写通配符前先拿真实 URL 跑一遍匹配,前缀规则最容易误伤同名前缀的目录。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189