robots.txt 是抓取层的规则,不是索引层的开关。把一段目录写进 Disallow,只是告诉搜索引擎“不要来抓”,它并不会主动把已经收录的地址从索引里删掉。反过来,恢复抓取之后收录也不会立刻回到从前——这中间的落差,常被误判成“改了没用”。
先分清 robots.txt 管什么、不管什么
- 管抓取:被禁止的 URL 不会被正常抓取,页面内容也就无法被读取。
- 不管索引:已经进入索引的地址,不会因为一条 Disallow 就自动消失;它可能长期以“只有 URL、没有摘要”的形式留在结果里。
- 会让 noindex 失效:如果页面同时写了 noindex,但抓取被禁止,爬虫读不到这条指令,删除动作就无从触发。这是最容易被忽略的一层。
所以顺序很重要:先放开抓取,再让 noindex 有机会生效,最后才谈索引状态的变化。
第一步:确认封禁范围是否真的覆盖了目标目录
很多“误封”其实是规则写得比想象中更宽,或者更窄。
- 路径按前缀匹配。Disallow: /news 会连 /news-old、/newsletter 一起挡住。
- 通配符 * 和结尾符 $ 会改变匹配范围,尤其在带参数的 URL 上更明显。
- 路径区分大小写,/Search 和 /search 可能是两条不同的规则。
- 同一个爬虫名称出现多段时,通常只有最具体的那一段生效,容易被后写的宽松规则“以为放开了”。
- 检查有没有 Disallow: / 这类整站规则被部署到了生产环境。
第二步:确认 robots.txt 本身能被正常读取
- 必须放在域名根目录,子域名与不同端口各自独立。
- 返回 200 且内容类型为纯文本;返回 4xx 一般按“无限制”处理,返回 5xx 可能被当作“全部禁止”,两种情况都会让排查跑偏。
- 如果站点用了 CDN 或多套环境,确认对外返回的是同一份文件,别让测试环境的规则盖住线上。
- 改动之后,用各搜索引擎提供的抓取测试工具验证一次,比反复改文件更有效。
第三步:放开抓取之后的观察顺序
这一步不要跳步,按顺序看信号。
- 看服务器日志:确认目标目录重新出现抓取记录。没有抓取,后面的都不用谈。
- 看页面是否被重新读取:只有内容被读到,noindex、canonical、状态码这些信号才有机会生效。
- 看是否需要主动表达意图:确实要下线的页面,用 404/410 或 noindex 说明,而不是继续靠 Disallow 拖着。
- 看索引状态的变化:这一步通常需要时间,且不保证结果,观察趋势即可,不必逐日盯单个 URL。
几个常见坑
- 把 Disallow 当成删除工具,页面长期处于“抓不到、也删不掉”的中间状态。
- 只改了一处规则,忘了多域名、多语言目录下还有各自的 robots.txt。
- 恢复了抓取,但页面本身内容完整度或质量没变,收录表现自然也不会有明显变化。
- 用 robots.txt 屏蔽大量低价值目录后不做清理,抓取放开了,预算又回到老问题上。
把 robots.txt 当成“抓取开关”而不是“收录开关”,排查时就会先问一句:现在是抓不到,还是抓到了但没被留下?分清这两件事,后面的核对顺序才不会乱。