蜘蛛池知识

蜘蛛池入口页的 robots 配置:抓取开关与收录开关别搞混

robots.txt、meta robots 与 X-Robots-Tag 都能左右蜘蛛对入口页的处理方式,但三者作用范围和生效前提并不相同。本文梳理各自的语义、入口页常见的配置组合,以及 Disallow 与 noindex 叠加、CDN 覆盖规则等容易踩的坑,并给出验证配置是否生效的检查方法。

蜘蛛池知识

蜘蛛池入口页的 robots 配置:抓取开关与收录开关别搞混

蜘蛛进入池子时,最先请求的经常不是入口页,而是根目录的 robots.txt。这个文件、页面里的 meta robots、以及 HTTP 响应头中的 X-Robots-Tag,共同决定了蜘蛛能不能抓、抓到之后怎么处理。这三者里任何一个配错,入口页都可能白做。

robots.txt 是站点级的抓取开关

robots.txt 只放在域名根目录,靠 User-agent 分组生效,同一个域名下所有路径共享一份。它控制的是抓取,不是索引——被 Disallow 挡住的 URL,蜘蛛连内容都读不到。

  • 别顺手全站禁止。入口页要被抓取,就不要出现 “Disallow: /” 这类写法,除非你确实只需要蜘蛛读 robots.txt 本身。
  • 注意前缀匹配。“Disallow: /pool/” 会连带挡住 /pool/a.html 等所有下级路径,目录粒度要提前想清楚。
  • 别挡静态资源。入口页若依赖 CSS、JS 渲染,把资源目录一起禁掉,蜘蛛看到的可能是残缺页面。
  • 多域名多份规则。每个入口域名都有各自的 robots.txt,批量建池时要确认没有继承到旧规则。

meta robots 与 X-Robots-Tag 的区别

meta robots 写在 HTML 的 head 里,X-Robots-Tag 走 HTTP 响应头。两者指令集大致相同,但生效前提不同:meta 需要页面被成功抓取并解析才能读到,X-Robots-Tag 在拿到响应头的那一刻就能生效,非 HTML 文件也能用。

  • noindex 表示不要把该页放进搜索结果,但不影响抓取和链接跟随。
  • nofollow 表示不要沿着页面上的链接继续走,用它会影响入口页向外传递的发现路径。
  • none 等价于 noindex 加 nofollow,使用时要想清楚它的双重含义。
  • X-Robots-Tag 的语法要写全,例如 “X-Robots-Tag: noindex”,缺前缀会变成无效响应头。

入口页常见的几种组合

入口页的角色是“被蜘蛛发现、并把蜘蛛送到目标页”,所以多数情况下希望它可抓取、链接可跟随。

  1. 只希望蜘蛛走一遍、不想让入口页出现在结果里:保持可抓取,加 noindex,链接仍然 follow。
  2. 入口页本身也是内容页:正常 index、follow,重点转向内容质量与更新节奏。
  3. 临时停用的入口页:更推荐返回 404 或 410,而不是用 robots.txt 去遮,遮住只会让蜘蛛反复尝试。
  4. 测试阶段的页面:用 X-Robots-Tag 在服务器层临时加 noindex,比改模板更快也更可控。

几个容易踩的坑

  • robots.txt 与 noindex 叠加。先 Disallow 再指望 meta noindex 生效,逻辑上不成立——蜘蛛读不到页面,自然也读不到 meta。
  • CDN 或 WAF 返回的 robots.txt 不是你写的那份。有些节点会自动生成或缓存旧版本,排查时要看实际响应内容,而不是看源站文件。
  • 返回 403、503 时怪 robots。那多半是防火墙或源站限流导致的,与 robots 规则无关,日志里的状态码能区分。

怎么验证配置是否生效

  • 用命令行带指定 User-Agent 请求一次,看响应头和正文字段是否与预期一致。
  • 在搜索资源平台的 robots 测试工具里跑一遍,确认目标 URL 处于允许抓取状态。
  • 翻 access log,看蜘蛛是否请求过 robots.txt、请求之后有没有继续访问入口页。
robots 相关配置的改动成本很低,影响面却很大。动手之前先确认要的是“不被抓”还是“不被收录”,这是两个完全不同的开关。