robots.txt 大概是站点里最小的文件之一,却直接决定蜘蛛能走到哪些地址。它语法简单,但改错一行就可能让大片栏目收不到抓取请求。把它当成一次例行自查,比等到抓取数据掉了再回头翻记录要省事得多。
第一步:确认文件本身能被正常拿到
先看最基础的三件事:能否通过 https://你的域名/robots.txt 直接打开、返回状态码是否为 200、内容是不是纯文本。返回 404 时,蜘蛛会按“没有限制”处理,同时你也失去了这个指令入口;返回 200 但显示的是首页 HTML,多半是服务器重写或 CDN 缓存出了问题,这种“假文件”比 404 更不容易被发现。
- 文件放在域名根目录,子目录里的同名文件不会被标准爬虫读取。
- 文件名固定为 robots.txt,注意大小写。
- 确认 CDN 没有缓存旧版本,改完规则后先看线上内容是否已更新。
- 测试站、预发布站建议整站禁止抓取,避免与正式站内容重复。
第二步:逐条读规则,而不是只看有没有写
很多问题不是“忘了写”,而是“写了但写偏了”。把文件从头到尾读一遍,逐条确认它挡住的是你本来就不想被抓的地址。
容易写错的几处
- Disallow: / 上线测试后忘记删除,全站抓取被直接掐断。
- 通配符和结尾符使用不当,例如 /search 与 /search* 覆盖的范围并不一样。
- 把 CSS、JS 目录一并屏蔽,蜘蛛拿不到渲染所需资源,对页面的理解会打折扣。
- 为了挡参数而屏蔽带问号的地址,结果把分页或正常功能路径一起挡掉。
- Allow 与 Disallow 规则互相重叠,指望爬虫自行判断优先级,不如把规则写得更明确。
第三步:分清它和 meta robots、X-Robots-Tag 的分工
robots.txt 管的是“要不要来抓”,meta robots 标签和 HTTP 头里的 X-Robots-Tag 管的是“抓到了要不要收录、要不要跟随链接”。两者常被混为一谈。
如果某个页面既不想被抓取、又不想出现在结果里,只写 robots.txt 往往不够:爬虫看不到页面内的 noindex,反而可能因为外部链接把它收录成一条没有摘要的记录。需要彻底排除时,通常的做法是允许抓取,再让页面返回 noindex。
记住一句话:robots.txt 是抓取层面的门禁,收录层面的开关在页面和响应头里。
第四步:Sitemap 声明与抓取节奏
可以在文件末尾用 Sitemap 指令指向站点地图的完整地址,方便蜘蛛发现入口。需要注意的是,Sitemap 里提交的地址如果大范围被自己屏蔽,两边会互相矛盾,这时先改哪一边就要想清楚。
至于 Crawl-delay,只有部分爬虫支持,主流搜索引擎基本已经忽略。与其限制抓取频率,不如先解决服务器响应时间,那才是抓取预算被消耗的主要原因。
第五步:改完必须做的验证
- 用搜索引擎官方提供的 robots.txt 测试工具,输入具体 URL 查看是否被允许。
- 挑重要栏目页、详情页、静态资源各测一次,不要只看首页。
- 修改后连续观察几天的抓取日志与抓取统计,确认目标目录仍有访问记录。
- 保留修改前的备份和一句话说明,万一出问题能快速回滚。
把 robots.txt 当成一个会长期变化的配置文件来对待:每次调整栏目结构、上线新目录、临时屏蔽测试环境时,都顺手过一遍这几条,往往就能避开大部分麻烦。