蜘蛛池知识

蜘蛛池入口页的 robots.txt 与 meta robots:哪些设置会把蜘蛛挡在门外

入口页批量上线时,robots.txt 和 meta robots 常被当成随手一填的配置,结果把蜘蛛挡在门外。本文拆解这两类指令的作用范围、常见误配和检查方法,帮助你在不影响抓取的前提下控制索引范围。

蜘蛛池知识

蜘蛛池入口页的 robots.txt 与 meta robots:哪些设置会把蜘蛛挡在门外

很多入口页的问题不是内容不够,而是蜘蛛根本没被允许进来。robots.txt 和 meta robots 一个在站点层,一个在页面层,作用范围不同,误配后的表现也不一样。

robots.txt:站点层的通行规则

robots.txt 放在域名根目录,只对当前域名生效。它本身不是强制标准,主流搜索引擎会遵守,但不同爬虫对通配符、正则和 Crawl-delay 的支持并不一致。

  • User-agent: * 与 Disallow: / 组合会把整站挡掉,这是入口页最严重的误配之一。
  • Disallow 只写目录不写斜杠,可能匹配到更多路径;写 /tmp 会连带挡住 /tmp-abc 这类地址。
  • Allow 与 Disallow 的优先级在不同爬虫里表现不同,重要目录建议单独放行并复验。
  • Crawl-delay 对配额紧张的小站不一定有用,部分爬虫会直接忽略。
  • Sitemap 声明可以放在 robots.txt 里,但不要和 Disallow 规则冲突。

动态生成时的坑

有些程序按环境生成 robots.txt,测试环境返回 Disallow: /,上线后没有切换。还有的服务器把不存在的 robots.txt 返回 200 加一段空内容,爬虫可能把它当成有效规则,也可能因为解析失败而停止深入。

meta robots:页面层的开关

meta robots 写在 head 里,只对当前页面生效。常见取值包括 noindex、nofollow、noarchive、nosnippet。

  • noindex 是入口页最需要警惕的一项:页面能被抓,但不会进入索引,批量套模板时很容易带进来。
  • nofollow 会阻止蜘蛛跟随页面链接,入口页靠链接把蜘蛛导向目标页,误配后链路等于断掉。
  • noarchive 只影响快照,不影响抓取和索引,通常不必动。
  • 多个 meta robots 同时出现时,爬虫的合并策略不一致,最好只保留一条。

X-Robots-Tag 与响应头

有些站点通过 HTTP 响应头里的 X-Robots-Tag 控制索引,这个指令对 PDF、图片等非 HTML 资源同样有效。如果服务器配置里统一加了 noindex,页面里的 meta 标签写得再对也没用。

常见误配组合

  1. robots.txt 放行,但 meta robots 写了 noindex:蜘蛛来抓,不建索引。
  2. robots.txt 屏蔽目录,页面里却期待被抓:蜘蛛可能连请求都不发。
  3. 屏蔽 CSS 与 JS:部分爬虫需要渲染才能理解页面,屏蔽后拿到的内容不完整。
  4. 测试环境规则带到正式环境:整站被挡,或者只放行了少数路径。
  5. 多域名共用一份 robots.txt:A 域名的规则被套到 B 域名上。

上线前后怎么检查

用爬虫视角而不是浏览器视角看问题。

  • 直接访问 /robots.txt,确认返回 200、内容与预期一致,没有被缓存成旧版本。
  • 用搜索资源平台提供的 robots 测试工具验证具体 URL 是否被允许。
  • 查看页面源代码里的 meta robots,而不是只看渲染后的 DOM。
  • 抓一次响应头,确认没有意外的 X-Robots-Tag。
  • 上线后观察日志中目标 URL 的抓取记录,如果入口页有访问、目标页没有,优先检查 nofollow 和链接是否可抓。
robots.txt 和 meta robots 只影响抓取与索引的意愿,不决定页面质量。放行之后能不能被收录,仍然要看内容与站点整体表现。

批量站点最容易在模板和服务器配置里埋下这两类指令。建议把 robots.txt 与 meta robots 纳入上线检查项,改动一次就复验一次,避免一个小配置把整条蜘蛛链路挡在门外。