robots.txt 通常只有几行,写完就被遗忘在根目录。但它是蜘蛛进入站点前最先读到的文件之一,一条写错的规则,可能让整站或某个栏目长期没有抓取。这篇属于站点运营里的基础自查,重点是把“能抓什么、不能抓什么”这件事定期核对一遍。
先明确 robots.txt 的边界
把它的定位搞清楚,很多误用会自然消失。
- 它是建议,不是防火墙。是否遵守取决于爬虫本身,恶意抓取也不会因为一行 Disallow 就停下。
- 阻止抓取不等于阻止收录。被 Disallow 的 URL 仍可能因为外链被收录,只是缺少标题和摘要。
- 它不适合用来保护隐私或隐藏内容,真正的权限控制要靠登录态和服务器配置。
- 它也不能替代 noindex。要阻止收录,优先用 noindex,并且保证页面能被抓取到。
正文自查:常被写错的地方
1. 规则是否误伤整站
Disallow: / 会挡住全站。这条规则在测试站、临时维护页上很常见,一旦随模板或配置同步到正式环境,影响是直接的。自查时先确认这份文件属于哪个环境,再看它挡住了什么。
2. 路径写法
- 路径区分大小写,/Images/ 和 /images/ 不是一回事。
- 结尾漏写斜杠,可能匹配到不该挡的目录。
- 通配符 * 与结尾的 $ 会放大匹配范围,加之前先确认影响面。
- 多个 User-agent 段落并存时,确认目标爬虫落在哪一段,别把规则写进了别的段落。
3. 是否挡住了渲染资源
把 CSS、JS、图片目录一起挡掉,看起来省抓取,实际会让蜘蛛无法正确渲染页面,判断页面内容时容易出错。除非确有需要,通常建议放开这些静态资源。
4. Sitemap 声明
文件末尾的 Sitemap 行指向正确地址、可正常访问,是常规做法。地址写错或指向旧域名,等于白写。多语言、移动端声明也应对照实际配置检查。
5. meta robots 与 X-Robots-Tag 要一起看
HTML 里的 meta robots 和响应头里的 X-Robots-Tag 是两套独立设置,容易出现互相打架的情况。常见问题是:robots.txt 挡住了抓取,页面里又写着 noindex,结果 noindex 读不到,页面反而可能以空标题形式出现在结果里。要下线页面,就让页面可抓取 + noindex,等确认移除后再考虑屏蔽抓取。
一份可以照着走的检查步骤
- 直接访问站点根目录的 /robots.txt,确认返回正常状态,不是 404,也不是被前端路由接管的 HTML 页面。
- 用搜索引擎官方提供的 robots 测试工具,输入几个关键 URL,逐个看判定结果。
- 分别测试首页、栏目页、详情页、静态资源、后台路径,确认该放行的放行、该拦的拦住。
- 检查是否有子目录、测试域名、CDN 节点上残留的另一份 robots.txt。
- 确认文件能正常返回后,再顺手检查 Sitemap 地址是否与实际一致。
- 修改后在日志里观察一段时间抓取量变化,确认没有出现断崖式下跌。
改动与回滚
robots.txt 常被 CDN 或缓存层缓存,改完不生效时先想到刷新缓存,而不是反复改文件。另外建议把每次修改留档,改错时能立刻恢复上一版——这个文件改动量小,但影响面大,值得用对待配置文件的谨慎程度来处理。
一个习惯:任何涉及“阻止抓取”的改动,先在测试域名验证,再上线,上线后隔天回看一次抓取日志。
定期检查的节奏
不必频繁修改,但可以固定一个周期,比如每季度或每次大改版前后,把 robots.txt、meta robots、Sitemap 声明放在一起过一遍。规则稳定、边界清楚,蜘蛛的抓取才会更容易落在你真正希望被看到的页面上。