Bing Webmaster 里一批文章显示「已被 robots.txt 阻止」,把 robots.txt 从头翻了一遍没有任何相关规则,用 Bing 的抓取测试工具也复现了阻止,Google 侧完全正常。

这类报错背后常见的原因有几处,逐个排除就行。Bing 缓存了旧版 robots,最长可能保留数天;regions 或 X-Robots-Tag 响应头里带了 noarchive;robots.txt 里有一条匹配范围过宽的通配符规则;站点返回 403 时 Bing 会按 robots 阻止归类。

先看 Bing 抓到的 robots 版本

curl -s -A 'bingbot' https://www.example.com/robots.txt | head -20

接着用不同 UA 对比响应头

curl -sI -A 'bingbot' https://www.example.com/post/1 | grep -i x-robots

全量搜一遍通配符规则

curl -s https://www.example.com/robots.txt | grep '\*'

剩下的就是在后台请求重新抓取该 URL

curl -s 'https://ssl.bing.com/webmaster/api.svc/json/SubmitUrl?apikey=$KEY' -d '{"siteUrl":"https://www.example.com","url":"https://www.example.com/post/1"}'

这台环境是别人交接的,不少默认值被动过,只能一项项核。

同事提醒我看一下最近一次发布,时间点确实对得上。

别只看报错消失,验证要多做一步。Bing 抓取测试显示允许,后台的阻止提示在重新抓取后消失,该批 URL 两周内重新进索引。

Bing 的 robots 缓存比 Google 久,改完文件别急着下结论,先用抓取测试工具确认它读到的是哪一版。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189