不少人在搭建蜘蛛池入口页时,会顺手在 robots.txt 里把入口页目录 Disallow 掉,心里想的是“页面本身不想被抓,但链接留着让蜘蛛顺着去抓目标 URL”。这个思路能不能成立,要看被挡住的到底是哪一环。
robots.txt 屏蔽的是“抓取”,不是“发现”
robots.txt 的 Disallow 规则,作用是告诉搜索蜘蛛不要去请求这个 URL,也就是不抓取。它是行业约定,主流搜索引擎的蜘蛛都会遵守。但搜索引擎获得一个 URL 的途径有很多:sitemap、外部链接、主动提交接口、其他页面上的链接。入口页被 Disallow,切断的只是“从入口页 HTML 里读到链接”这一条路径,并不影响目标 URL 从别的渠道被发现。
换句话说,链接的“被发现”和页面的“被抓取”是两件事。把入口页屏蔽掉,等于关掉了一条发现通道,而不是把目标 URL 拉黑。
入口页被屏蔽后,里面的链接会怎样
- 如果入口页是目标 URL 唯一的发现途径,那基本就等于断了:蜘蛛不会去请求入口页,自然也读不到里面的 a 标签。
- 如果目标 URL 已经写进 sitemap,或者通过提交接口推送过,它仍然可能被抓取,只是少了入口页这条链接关系作为补充。
- 如果入口页 HTML 在规则生效之前已经被抓取并缓存,里面的链接可能在短时间内还被记得,但这既不可靠,也无法长期依赖。
几个容易踩的场景
- 通配符写得太宽:例如 Disallow: /*? 或 Disallow: /pool/,把入口页和它下面所有链接页面一起挡住。
- 入口页和目标 URL 被同一条规则覆盖:常见于入口页和目标页放在同一个目录、共用同一个路径前缀的情况。
- 把 robots.txt 和 meta noindex 混着用:noindex 需要蜘蛛先把页面抓下来才能读到,Disallow 则让它根本抓不到。两者叠加,往往互相打架,结果和预期完全不同。
- 一边屏蔽入口页,一边指望它传递链接关系:页面都读不到,里面的链接自然无从谈起。
怎么排查
- 打开自己的 robots.txt,逐条对照入口页和目标 URL 的实际路径,特别留意通配符和以 $ 结尾的写法。
- 用站长平台提供的 robots.txt 测试工具,输入入口页 URL,看结果是“允许”还是“被屏蔽”。
- 确认目标 URL 不在任何一条 Disallow 规则覆盖范围内,避免被“顺带”挡住。
- 如果确实不希望入口页被抓取,就别把它当作目标 URL 的发现通道,改用 sitemap 或提交接口补上这条路径。
- 在服务器日志里观察搜索蜘蛛是否请求过入口页。如果长期完全没有记录,多半就是被规则挡住了。
一句话总结:robots.txt 管的是“能不能抓这个页面”,不是“能不能知道这个链接”。想让入口页承担发现链接的作用,就别把它屏蔽掉。