修改 robots.txt 后看到“没生效”,先别急着反复改文件。最可能的情况是:你看到的是缓存或延迟副本,而不是当前线上文件。排除缓存假象的核心动作是绕开浏览器和中间层,直接读取服务器返回的原始内容,并确认搜索引擎抓取到的版本与之一致。
假设你在 robots.txt 中把 Disallow: /private/ 改成允许抓取,保存后打开浏览器访问,页面仍显示旧的 Disallow。此时有三种解释:浏览器缓存了旧响应;CDN 或反向代理缓存了旧文件;搜索引擎侧尚未重新抓取。三者现象相似,但处理方式不同。
第一步不是清缓存,而是确认服务器当前真正返回什么。用命令行直接请求,并强制不使用本地缓存:
curl -s -H "Cache-Control: no-cache" https://example.com/robots.txt
把 example.com 换成你的域名。如果这里返回的是新内容,而浏览器里是旧内容,问题基本定位在浏览器或本地网络缓存。如果命令行返回的也是旧内容,则要继续往 CDN、反向代理或源站文件方向查。
按请求经过的顺序检查,能让判断结果更明确:
Age、Cache-Control、X-Cache 等字段。出现较大的 Age 值,说明响应来自缓存副本。常见错误是:只清了浏览器缓存,就认为问题解决;或者只改了 CDN 缓存,却没确认源站文件是否更新。两个位置都可能是旧内容。
排除了缓存之后,如果搜索引擎仍未按预期抓取,就要检查规则本身。以下检查项可以帮助区分:
Disallow 与路径之间应有冒号,路径区分大小写。* 和 $ 的含义需按对应搜索引擎文档核对。这里要特别注意:robots.txt 的抓取限制不等于可靠的索引移除。如果目标是让已收录页面消失,仅靠 Disallow 往往不够,甚至可能因为无法抓取而保留旧摘要。站点地图也不保证收录,它只是发现 URL 的途径之一。
每次修改 robots.txt 后,按以下顺序执行,可以减少误判:
curl 或服务器文件查看命令确认源站内容已更新。如果以上步骤都确认新规则已生效,但抓取行为仍未变化,下一步应转向检查目标 URL 本身是否被其他规则、元标签或服务器配置限制,而不是继续在缓存问题上反复操作。