常见问题

入口页被 robots.txt 屏蔽后,里面的目标 URL 还会被搜索蜘蛛发现吗

robots.txt 的 Disallow 只是请求搜索引擎不要抓取某个 URL,并不等于删除索引,也不等于页面里的链接会被自动跟进。入口页一旦被屏蔽,蜘蛛读不到内容,链接自然带不出去。本文说清 Disallow 与 noindex 的区别、入口页该用哪种方式处理,以及排查发现异常时的检查顺序。

常见问题

入口页被 robots.txt 屏蔽后,里面的目标 URL 还会被搜索蜘蛛发现吗

先分清「屏蔽抓取」和「屏蔽收录」

robots.txt 里的 Disallow 只表达一件事:不希望搜索引擎抓取这个 URL。它不等于「请把这条 URL 从索引里删掉」,也不等于页面里的链接会被自动跳过。被屏蔽的页面因为不会被抓取,内容读不到、链接读不到,这才是对发现环节的真正影响。

被 Disallow 的入口页,链接基本传不出去

搜索蜘蛛发现 URL 的常见来源有三类:外部链接、sitemap、以及已经抓到的页面里的链接。入口页属于第三类。如果入口页本身被屏蔽,蜘蛛按规则不会去抓,页面里指向目标 URL 的链接就不会被读出来,这条发现路径等于断了。

  • 入口页被 Disallow:蜘蛛不抓入口页,里面的链接不会被发现。
  • 入口页正常、目标 URL 被 Disallow:蜘蛛能读到链接,也可能尝试请求,但请求会被规则挡住。
  • 入口页被屏蔽,但目标 URL 在 sitemap 或别处有外链:仍可能被发现,只是和这条入口页无关。

那入口页到底该不该加 Disallow

如果入口页存在的意义就是让蜘蛛顺着链接往下走,就不该在 robots.txt 里屏蔽它。屏蔽之后,它只剩下一个「对外可见但读不到内容」的 URL,对发现没有任何帮助。

如果你的目的是不想让入口页本身出现在搜索结果里,常见做法有两个:

  1. 在页面里用 meta robots 写 noindex,follow:允许抓取、允许跟随链接,只是不给入口页建索引。前提是蜘蛛能抓到页面,规则才会生效。
  2. 通过响应头下发 X-Robots-Tag 的同类指令,适合不方便改 HTML 的情况。
Disallow 和 noindex 经常被混用:一个拦在抓取之前,一个作用在抓取之后。想让入口页带着链接走,就别用 Disallow;只是想让它自己不占搜索结果位,才轮到 noindex。

怀疑发现环节断了,按这个顺序查

  1. 打开站点根目录的 robots.txt,确认入口页所在目录有没有被整体 Disallow,注意路径前缀和大小写。
  2. 看入口页的响应状态码和响应头,确认有没有带 X-Robots-Tag: noindex 之类的指令。
  3. 在服务器日志里检索搜索蜘蛛对入口页的请求记录。如果从头到尾没有请求,优先怀疑屏蔽规则或链接入口本身不通。
  4. 确认目标 URL 除了这条入口页,还有没有 sitemap、其他页面或外部链接作为备用发现来源。

几个容易踩的细节

  • 被 Disallow 的 URL 仍有可能因为外部链接出现在结果里,只是通常没有摘要和快照,这不代表屏蔽没生效。
  • 如果想临时停掉入口页,用 503 加 Retry-After 比 Disallow 更可控,恢复后蜘蛛通常会再来看。
  • robots.txt 的规则是按爬虫分别对待的,不同搜索引擎对通配符和路径匹配的执行细节存在差异,别只在一家上验证就下结论。
  • robots.txt 文件和入口页本身如果互相矛盾(比如 robots 允许、页面又 noindex),最终以实际抓取到的指令为准,测试时容易误判。

把入口页当成一条「可读的通道」来维护:能抓、能读到链接、状态码正常,后面的发现和收录才有讨论的基础。