蜘蛛池知识

蜘蛛池入口页的 robots 指令:哪些该放开,哪些该收紧

robots.txt、meta robots 和 X-Robots-Tag 三种指令作用范围不同,混用容易把入口页的发现路径堵死。本文梳理入口页该放开和该收紧的几类情况,说明 noindex 与 Disallow 的先后顺序,并给出一份改完规则后的检查清单。

蜘蛛池知识

蜘蛛池入口页的 robots 指令:哪些该放开,哪些该收紧

robots 相关指令是入口页配置里最容易被忽略、又最容易造成误伤的一环。它本身不是安全措施,只是给爬虫的一份“说明文件”,告诉对方哪些可以抓、哪些不建议抓。入口页的作用是让蜘蛛发现并顺着链接走到目标页,如果 robots 配置把这条路堵住,前面的域名、IP、模板工作基本白做。

三种常见写法,作用范围不一样

  • robots.txt:放在域名根目录,对整个站生效,按 UA 或目录做允许/禁止。蜘蛛要先取这个文件,再决定抓什么。
  • meta robots:写在页面 head 里,只对当前页生效,能设置 noindex、nofollow、noarchive 等。
  • X-Robots-Tag:放在 HTTP 响应头,效果类似 meta robots,适合非 HTML 文件或不想改模板的场景。

三者优先级不完全相同,但共同点是:Disallow 只是“别来抓”,不等于“别收录”。如果页面已被别处链接指向,仍可能以无摘要的形式出现在结果里。想真正让页面退出索引,通常先用 noindex 让蜘蛛抓到并读到指令,等页面从索引里退出后,再考虑用 robots.txt 屏蔽。

入口页该放开的几类

入口页的职责是“被发现”,所以大多数情况下应该允许抓取。需要重点检查的是:

  • 入口页本身没有被误写进 Disallow,批量生成模板时最容易整段复制错。
  • CSS、JS 这类渲染资源不要屏蔽。蜘蛛要执行脚本才能看到完整内容时,屏蔽资源可能导致它按空白页理解。
  • 跳转链上的中间页,如果靠 JS 或 meta refresh 跳转,更需要允许抓取,否则蜘蛛到不了目标页。
  • 如果入口页存在大量筛选参数,可以只放开必要参数,把无意义组合放进 Disallow,减少无效抓取。

该收紧的几类

  1. 后台、测试页、数据接口:这些页面没有分发价值,被抓只会消耗资源,也容易暴露站点结构。
  2. 重复内容页:同一批入口页的多个排序、分页变体,可以用 canonical 或 robots 收敛,不必全部放开。
  3. 已决定停用的入口页:如果只是不想让它再被抓,用 robots.txt 屏蔽比直接删掉更省事;如果整个入口页群要退役,返回 410 或 301 到有效页更清晰。

几个反复出现的误区

第一个误区是用 robots.txt 当作“隐藏入口页”的手段,以为蜘蛛看不到就不会识别出这是入口页群。实际上入口页一旦被外部链接、历史记录或 sitemap 暴露,屏蔽指令反而更显眼,而且这种方式对真实访客同样无效。

第二个误区是“先全站 Disallow,观察一阵再说”。全站屏蔽后再恢复,蜘蛛重新抓取的节奏往往比预期慢,入口页的发现周期会被拉长。如果只是担心某个目录,按目录屏蔽即可。

第三个误区是同一批入口页里混用 noindex 和 Disallow。两者组合的结果是“蜘蛛抓不到、也就读不到 noindex”,页面可能长期停留在索引里。需要用 noindex 时,就先别用 Disallow。

把 robots 当成一份给爬虫的通行说明,而不是安全锁。入口页要能被抓到,中转环节要能走通,不想被索引的页面用 noindex 处理,不想被抓的目录用 Disallow 处理——顺序别搞反。

落地时的检查清单

  • 入口页域名根目录是否有 robots.txt,内容是否符合预期,是否残留测试环境的屏蔽规则。
  • 入口页模板里是否带上了不该有的 meta robots,常见于整站复制的模板。
  • 服务器响应头里是否有多余的 X-Robots-Tag。
  • 停用、改版、迁移过的入口页,robots 规则是否同步更新,避免“页面已 301 但旧规则还屏蔽着新路径”。
  • 改完规则后,用抓取测试工具实际验证一次,而不是只看配置文件。

规则本身不复杂,难的是保持一批入口页的配置一致。批量生成时把 robots 相关项做成统一模板,比事后逐个排查省力得多。