蜘蛛池知识

蜘蛛池入口页的 robots.txt 与 meta robots:哪些写法会挡住 URL 发现

入口页有链接、有内容,蜘蛛却不来,问题常出在 robots 类配置上。本文拆解 robots.txt 的分组、前缀匹配与 Crawl-delay,meta robots 与 X-Robots-Tag 的分工,以及几种会让 URL 发现断路的常见写法,并给出上线前的自检顺序。

蜘蛛池知识

蜘蛛池入口页的 robots.txt 与 meta robots:哪些写法会挡住 URL 发现

在蜘蛛池的入口页体系里,robots.txt 和 meta robots 是最容易被顺手写上、又最少被认真检查的两类配置。它们本身不参与排名,却会直接决定蜘蛛能不能顺着入口页把 URL 发出去。很多入口页明明有链接、有内容,蜘蛛却迟迟不来,问题往往就出在这几行规则上。

robots.txt 管的是抓取许可,不是收录结果

robots.txt 的作用是告诉蜘蛛哪些路径不要抓。它拦不住页面被别人收录(别处有链接时仍可能出现),但会让入口页上的链接失去被发现的机会——蜘蛛不抓这个页面,自然看不到页面里指向的 URL。

User-agent 分组要写清楚

robots.txt 按 User-agent 分组,每组规则只对匹配的蜘蛛生效。常见的坑是只写一条 User-agent: * 就以为万事大吉,而实际需要关注的搜索引擎蜘蛛抓取习惯并不一致。需要区分就单独分组,不需要区分就用通配,但规则本身别写得太紧。

Disallow 是前缀匹配,容易误伤

  • Disallow: /tmp 会同时挡住 /tmp、/tmp1、/tmpage 这类路径,要留意结尾是否该加斜杠。
  • Disallow: /*?* 这种一刀切挡参数的写法,可能把入口页依赖的分页、筛选链接一起挡掉。
  • 空白的 Disallow: 表示不限制,和 Disallow: /(全部禁止)是完全相反的结果,两者只差一个斜杠。

Crawl-delay 与 Sitemap

Crawl-delay 只有部分蜘蛛支持,数值设得过大,等于主动降低入口页被访问的频次。Sitemap 一行则相当于给蜘蛛一份额外的入口清单,建议指向返回 200 的 XML 地址,不要指向跳转链或需要登录的路径。

meta robots 与 X-Robots-Tag 的分工

只想控制单个页面时,用页面内的 meta robots 更直观;如果是图片、PDF、JS 等非 HTML 资源,就只能靠响应头里的 X-Robots-Tag。两者指令语义一致,同一页面同时出现时,通常以更严格的那条为准。

  • noindex:不索引,但不影响蜘蛛继续抓取页面里的链接。
  • nofollow:不追踪页面内链接,用在入口页上等于自己切断 URL 发现路径。
  • none:等同于 noindex 加 nofollow,限制最彻底,入口页要慎用。

几种常见的反效果写法

  1. 入口页模板里带了全局 noindex,上线时忘了摘掉。
  2. robots.txt 里挡住了静态资源目录,蜘蛛抓到 HTML 却拿不到 CSS 和 JS。
  3. 测试环境留下的 Disallow: / 被同步到了线上。
  4. 多个子域共用同一份 robots.txt,互不相关的规则叠加在一起。

上线前的自检顺序

  1. 直接访问 /robots.txt,确认返回 200 且是纯文本,不是 404 或 HTML 错误页。
  2. 用搜索引擎后台的测试工具模拟目标蜘蛛读取规则,逐个验证关键路径。
  3. 抽查入口页源码里的 meta robots,确认没有被模板或 CMS 插件悄悄注入。
  4. 检查非 HTML 资源的 X-Robots-Tag 响应头。
  5. 规则调整后观察访问日志,确认蜘蛛的抓取行为符合预期。
robots 类配置属于做对了没有额外收益、做错了直接断路的环节。它不保证收录,也不保证排名,但能保证入口页不会因为一行规则被蜘蛛整体跳过。

一点使用建议

入口页的 robots 规则建议尽量简单:只放开确实需要被发现的路径,只挡住确实不该抓的目录,不做过度的正则式限制。每次改动前后留一份记录,方便在蜘蛛行为异常时快速回滚对比。