站点运营

站点运营:robots.txt 自查,别让一条规则挡住全站抓取

robots.txt 是抓取权限的第一道开关,写错一行就可能让大片栏目收不到抓取请求。本文按文件可访问性、规则写法、与 meta robots 的分工、Sitemap 声明和上线验证五个步骤,整理一份可以逐条执行的 robots.txt 自查清单,帮你在改动前后把风险控制住。

站点运营

站点运营:robots.txt 自查,别让一条规则挡住全站抓取

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,只有部分爬虫支持,主流搜索引擎基本已经忽略。与其限制抓取频率,不如先解决服务器响应时间,那才是抓取预算被消耗的主要原因。

第五步:改完必须做的验证

  1. 用搜索引擎官方提供的 robots.txt 测试工具,输入具体 URL 查看是否被允许。
  2. 挑重要栏目页、详情页、静态资源各测一次,不要只看首页。
  3. 修改后连续观察几天的抓取日志与抓取统计,确认目标目录仍有访问记录。
  4. 保留修改前的备份和一句话说明,万一出问题能快速回滚。

把 robots.txt 当成一个会长期变化的配置文件来对待:每次调整栏目结构、上线新目录、临时屏蔽测试环境时,都顺手过一遍这几条,往往就能避开大部分麻烦。