常见问题

入口页误开 robots.txt 屏蔽,搜索蜘蛛还会跟进里面的目标链接吗?

很多人排查蜘蛛池入口页时只看链接写法和服务器响应,忽略了 robots.txt 这一层。一行 Disallow 就可能让搜索蜘蛛无法读取入口页,页面上的目标链接也随之失去被发现的机会。这篇文章说明 robots.txt 的作用边界、几种常见的误屏蔽写法,以及从工具和日志两端自查的顺序。

常见问题

入口页误开 robots.txt 屏蔽,搜索蜘蛛还会跟进里面的目标链接吗?

给蜘蛛池入口页做排查时,robots.txt 是最容易被忽略的一环。很多人只盯着入口页的 HTML、链接写法和服务器响应,却没注意一行 Disallow 就可能让搜索蜘蛛连页面都不读,后面的目标链接自然无从谈起。下面把常见误配置和自查方式理一遍。

robots.txt 约束的是抓取,不是收录

先明确一件事:robots.txt 是给蜘蛛看的抓取许可协议。它决定蜘蛛能不能请求某个路径,并不直接决定 URL 是否出现在结果里。

  • Disallow:蜘蛛请求该路径时会主动放弃抓取,页面内容读不到。
  • Allow:在整体屏蔽的前提下开一个口子。
  • 规则冲突时,一般按路径匹配最长、最具体的那条执行;长度相同时 Allow 通常优先。

对蜘蛛池入口页来说,如果入口页本身被 Disallow,蜘蛛不会读取页面,也就看不到页面上指向目标 URL 的链接,这条发现链路就断了。

常见的误屏蔽写法

1. 一行通配把整站关掉

Disallow: / 是最典型的例子——本来只想挡后台目录,结果把全站挡了。测试环境抄来的配置没删干净,也很容易出现这种情况。

2. 带参数的规则误伤入口页

像 Disallow: /*? 这类规则,会连同正常带参数的入口页一起挡住。入口页如果带分页、筛选或统计参数,就要特别留意这一行。

3. robots.txt 本身返回 5xx

多数搜索引擎拿到 5xx 的 robots.txt 时会保守处理,短时间内减少甚至暂停对该站点的抓取。反过来,返回 404 通常被视为没有限制,可以正常抓取。所以“临时关站就把 robots.txt 删掉”并不是一个适合长期使用的手段。

4. 被 CDN 或反向代理缓存了旧版本

上线新规则后,如果边缘节点还缓存着旧的 robots.txt,蜘蛛看到的就是上一版。改完记得刷新缓存,并实际拉取一次确认内容。

入口页被屏蔽后,目标 URL 还有别的发现途径吗

有,但通常不如正常抓取顺畅:

  • 目标 URL 被其他未被屏蔽的入口页或外部页面链接。
  • 目标 URL 出现在提交的 sitemap 或 RSS 中。
  • 目标 URL 通过主动提交接口被推送。

这些方式只是提供发现线索,具体是否抓取、何时抓取,仍由搜索引擎自己决定。所以把入口页的 robots.txt 修好、恢复正常的链接发现路径,通常比另找渠道更省事。

自查步骤

  1. 直接访问站点根目录下的 robots.txt,确认返回 200 且内容是最新版。
  2. 逐行核对 Disallow,对照入口页的真实路径,特别注意通配符和末尾斜杠。
  3. 用搜索引擎提供的 robots.txt 测试工具,输入一个入口页 URL,看判定结果。
  4. 核对服务器日志:如果入口页长期没有蜘蛛请求记录,而站内其他页面有,基本可以锁定是抓取层被挡住了。
  5. 修好后观察一段时间日志,确认蜘蛛能重新请求入口页,并顺着链接访问目标 URL。

容易和 robots.txt 搞混的两个东西

  • meta robots 或 X-Robots-Tag 里的 noindex:它不阻止抓取,蜘蛛仍然会读取页面、跟随链接,只是被标记的 URL 不应出现在结果中。也就是说,加了 noindex 的入口页,里面的链接通常还是会被跟过去。
  • 屏蔽目录和屏蔽单个 URL 的差别:robots.txt 是路径级别的,写错一层目录,可能连带影响下面的所有入口页。
一句话理解:robots.txt 挡的是“能不能读”,不是“能不能被收录”。入口页读不到,页面上指向目标 URL 的链接就不会被发现。

最后提醒一句,robots.txt 属于抓取层配置,改完不要只看面板提示,最好用实际请求和日志双重确认。规则越简单越好,能用一条精确路径解决,就不要轻易上通配符。