要排除缓存造成的假象,核心做法是:不要只看浏览器或本机一次请求的结果,而是用带时间戳的独立请求、不同网络出口和服务器日志交叉验证 robots.txt 的实际返回内容。robots.txt 是放在站点根目录的纯文本文件,搜索引擎抓取工具在请求任意 URL 前会先读取它。问题在于,这个文件经常被 CDN、反向代理、浏览器或本地 DNS 缓存住,导致你看到的“禁止抓取”或“允许抓取”并不是线上真实状态。
robots.txt 的缓存假象通常来自三层:浏览器缓存、CDN 或反向代理缓存、以及本机 DNS 缓存。三者表现相似,但排查方式不同。第一步是绕开浏览器,直接用命令行请求,并强制带上时间戳参数,避免中间层直接命中旧副本。
可以执行:
curl -s "https://你的域名/robots.txt?ts=$(date +%s)"
如果返回内容与你刚上传的文件一致,说明至少这一条路径是新的;如果仍是旧内容,继续往 CDN 和源站查。注意,加时间戳只能绕过按完整 URL 缓存的层,如果 CDN 配置了忽略查询字符串的缓存规则,这种方法也会失效,所以它只是第一道检查,不是最终结论。
最关键的判断依据是:源站返回什么、CDN 边缘节点返回什么、公网不同位置返回什么。三者一致,才能基本排除缓存假象。具体可以这样做:
响应头里的 Cache-Control、Age、ETag 和 Last-Modified 是判断是否命中缓存的重要线索。Age 较大通常说明内容来自缓存;ETag 变化则说明文件版本已更新。但这些只是线索,不能单独作为结论,因为不同 CDN 的头部策略并不统一。
robots.txt 的抓取限制不等于可靠的索引移除。即使你把某个路径写进 Disallow,已经收录的页面也不会因此自动消失;反过来,允许抓取也不保证一定收录。因此,验证时要区分“抓取工具看到的 robots.txt”和“索引状态”两件事。
可执行的检查项:
site: 查询或 URL 检查工具确认页面索引状态,但不要把索引结果直接等同于 robots.txt 是否生效。不同搜索引擎对 robots.txt 的解析细节和缓存刷新节奏不同,必须分别核查,不能因为一个平台更新了就认定全部平台都已同步。
排除一次假象不代表以后不会复发。建议在每次修改 robots.txt 后,固定执行同一套检查:命令行带时间戳请求、源站直连对比、CDN 缓存状态确认、站长平台重新读取。把这几步写成清单,下次改动时逐项打勾,比凭记忆判断可靠。
另外,站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名提升,这些都与 robots.txt 缓存问题无关,不要混在一起判断。下一步,先打开你当前项目的 robots.txt 请求记录,确认最近一次修改后返回的 Last-Modified 是否已经更新;如果没有更新,就从 CDN 缓存规则查起。