常见问题

蜘蛛池入口页 robots.txt 写错,搜索蜘蛛还会跟进目标URL吗?

robots.txt 只对所在域名生效,写错通常不会直接封掉其他站的目标URL,但会让搜索蜘蛛读不到入口页上的链接,少一条发现路径。本文梳理常见配置错误、影响范围和一套按日志验证、修复的顺序。

常见问题

蜘蛛池入口页 robots.txt 写错,搜索蜘蛛还会跟进目标URL吗?

很多人在排查目标URL不被抓取时,会忽略一个很靠前的位置:入口页所在域名的 robots.txt。它是一份放在域名根目录的纯文本文件,只对同一个域名生效。入口页在 a 站、目标URL在 b 站,a 站的 robots.txt 写错,不会直接让 b 站的页面不被抓取,但可能让搜索蜘蛛看不到入口页上的链接,等于少了一条发现路径。

常见的配置错误

全站封禁没删干净

从模板复制 robots.txt 时,最容易留下一个 Disallow: /。如果它出现在 * 段或某个具体爬虫段下面,入口页整站都不会被请求,入口页上放的链接自然也不会被读到。

User-agent 写法不规范

  • 名称后面带多余空格,或大小写与官方写法不一致;
  • 用了不存在的爬虫名称,规则实际落到 * 段上;
  • 多个 User-agent 段混在一起,Allow 与 Disallow 的匹配顺序与预期不同。

把 Disallow 当成“禁止收录”

Disallow 只是阻止抓取。如果某个入口页被 Disallow 挡住,爬虫读不到页面上的 noindex 标签,结果可能是页面仍在结果里出现,而链接又没被跟进。要控制收录,先允许抓取、再用 noindex,顺序不能反。

和 CDN、安全插件冲突

部分 CDN 或安全类插件会另外下发一份机器人规则,与根目录的 robots.txt 内容不一致。排查时要确认爬虫实际拿到的是哪一份。

入口页被挡之后会发生什么

入口页被抓取,是搜索蜘蛛读到其中链接的前提。入口页被自己的规则挡住时,蜘蛛通常只会请求 robots.txt,然后跳过页面,链接也就没有被读取的机会。此时目标URL的发现只能依靠其他入口页、站内链接、sitemap、主动推送等渠道。如果所有入口页共用同一个域名的同一份 robots.txt,这条路径会一起失效,影响面就比较集中。

怎么验证是不是 robots.txt 的问题

  1. 用浏览器直接访问入口域名的 /robots.txt,确认返回正常文本,不是 404,也不是 HTML 错误页。
  2. 用搜索平台提供的 robots.txt 测试工具,分别输入入口页地址和目标URL地址,看结果是允许还是被阻止。
  3. 翻服务器访问日志:如果蜘蛛有规律地请求 robots.txt 且状态码正常,说明文件可读;如果长期没有任何请求,问题可能在 DNS、CDN 或 WAF 层。
  4. 在日志里找搜索蜘蛛对入口页 URL 的请求记录。只有 robots.txt 的请求、没有入口页的请求,基本可以判断入口页被规则挡住了。
  5. 核对最近一次改动时间,与日志中入口页请求量下降的时间点是否吻合。

修复时的几点建议

  • 改动前先备份现有内容,方便回滚对比。
  • 只放行需要抓取入口页的爬虫段,尽量使用准确的爬虫名称,而不是依赖 * 一刀切。
  • 确认并移除误加的 Disallow: /,保留必要的目录限制即可。
  • 修改后观察一到两周日志,先看入口页请求数是否恢复,再看目标URL是否出现新的抓取动作。
  • 不要短期内反复改内容,避免爬虫按缓存的旧规则判断,导致数据看不出趋势。
robots.txt 是抓取开关,不是收录开关,也不能保证已经抓取的页面从结果里消失。它的作用范围只在当前域名之内。

入口页的 robots.txt 只是发现链条上的一环。入口页能被抓、链接能被读到、目标URL能正常响应,这三件事同时成立,搜索蜘蛛的跟进才会顺畅。排查时按这个顺序逐个确认,比只盯着一个文件更省时间。