经常有人问:把某个目录写进 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。这条路走不通:屏蔽发生在抓取环节,蜘蛛再多也进不去。蜘蛛池能改变的只是发现速度,改变不了抓取规则。
一份可以照着走的自查流程
- 列出想屏蔽的 URL 与目录,逐个确认目的:是不想被抓,还是不想被索引。
- 只想屏蔽索引的,从 robots.txt 中移除,改为页面级 noindex。
- 确实要屏蔽抓取的,同步清理内链和 Sitemap 里的对应地址。
- 检查 robots.txt 中的通配符与目录写法,避免误伤正常页面。
- 改完后用后台的 robots.txt 测试工具验证,再观察日志中蜘蛛对该目录的访问是否减少。
最后提醒一句:robots.txt 是建议而非强制,遵守它的主要是主流搜索引擎。敏感内容不要只靠它保护,该加访问权限的加权限。