搜索抓取

robots.txt 挡住的 URL 还能被索引吗:屏蔽抓取与屏蔽索引的区别与配合

本文从发现、抓取、索引三层拆解 robots.txt 的 Disallow 与页面 noindex 的区别。被屏蔽抓取的 URL 依然可能被发现,而 noindex 必须被蜘蛛抓到才生效。文中给出三种常见冲突的处理方式和一份可执行的自查流程,避免屏蔽设置用反导致的抓取与索引问题。

搜索抓取

robots.txt 挡住的 URL 还能被索引吗:屏蔽抓取与屏蔽索引的区别与配合

经常有人问:把某个目录写进 robots.txt 的 Disallow,是不是就等于告诉搜索引擎“这页不存在”?答案是否定的。屏蔽抓取和屏蔽索引是两件不同的事,用反了,问题比不写还多。

先把三件事拆开:发现、抓取、索引

搜索引擎处理一个 URL 大致要经过三步:先通过内链、Sitemap、外链等渠道知道这个 URL 存在;再决定要不要去抓取页面内容;最后根据内容判断能不能索引并展示。

  • 发现:拿到的是线索,不涉及页面内容。
  • 抓取:真正取回 HTML,这一步才看得到页面里的 meta 标签。
  • 索引:内容取回之后才可能发生的事。

robots.txt 作用在第二步,noindex 作用在第三步。位置不同,效果自然不同。

robots.txt 的 Disallow:挡抓取,不挡发现

被 Disallow 的 URL,如果站内其他页面正常链接到它,蜘蛛仍然会把这条链接当作线索记下来。只是它不会去取这个页面的内容,于是页面里写的 noindex,它根本看不到。

Disallow 的常见结果是:URL 被别人发现,但内容长期不更新,搜索结果显示一段过时摘要,甚至只剩一个标题。这比直接返回 404 更让人难受。

所以,如果你希望某类页面彻底从搜索结果里消失,更稳妥的做法通常是:允许抓取,但在页面里加 noindex。让蜘蛛进来看到“不要索引”这句话,它才会照做。

什么情况下才该用 Disallow

Disallow 更适合那些“抓了也没用、还占抓取额度”的地址:

  • 后台、登录、购物车、结算流程等不可索引的功能页。
  • 大量自动生成的筛选参数组合,且没有独立价值。
  • 临时接口、数据导出地址、站内搜索结果页。

这些页面本来就不需要出现在搜索结果里,也没必要让蜘蛛反复抓。

nofollow、Sitemap 与 robots.txt 的三种冲突

1. 内链加 nofollow,发现路径就变弱

nofollow 不阻止抓取,但会削弱你通过这条链接把发现权传递出去的效果。如果导航、分页、列表链接都加了 nofollow,新页面基本只能靠 Sitemap 被发现,速度慢且不稳定。合理做法是:正文、导航、分页这类结构性链接不加 nofollow。

2. Sitemap 里放着被 Disallow 的 URL

这属于自相矛盾。抓取报告里经常能看到“已被 robots.txt 屏蔽”的提示。整理 Sitemap 时,先把 Disallow 的目录排除掉,再逐个确认剩余 URL 是否可抓取。

3. 指望蜘蛛池补发现

有些运营者想用蜘蛛池或外部链接去“催”一个被屏蔽的 URL。这条路走不通:屏蔽发生在抓取环节,蜘蛛再多也进不去。蜘蛛池能改变的只是发现速度,改变不了抓取规则。

一份可以照着走的自查流程

  1. 列出想屏蔽的 URL 与目录,逐个确认目的:是不想被抓,还是不想被索引。
  2. 只想屏蔽索引的,从 robots.txt 中移除,改为页面级 noindex。
  3. 确实要屏蔽抓取的,同步清理内链和 Sitemap 里的对应地址。
  4. 检查 robots.txt 中的通配符与目录写法,避免误伤正常页面。
  5. 改完后用后台的 robots.txt 测试工具验证,再观察日志中蜘蛛对该目录的访问是否减少。

最后提醒一句:robots.txt 是建议而非强制,遵守它的主要是主流搜索引擎。敏感内容不要只靠它保护,该加访问权限的加权限。