robots.txt 的 Disallow 和 noindex 有什么区别?
robots.txt 里的 Disallow 是告诉遵守规则的爬虫不要抓取某个路径。noindex 是告诉搜索引擎不要把页面保留在索引里。它们相关,但不是一回事。
实用规则是:用 robots.txt 管抓取;想让页面从搜索结果消失,用 noindex。不要只靠 Disallow 做去索引。
BaseToolbox 的 robots.txt 生成器 可以帮助起草抓取规则,但索引问题要用正确机制解决。
Disallow 做什么?
一条 robots.txt 规则可能像这样:
User-agent: *
Disallow: /private-drafts/
这表示希望爬虫不要抓取 /private-drafts/ 下面的 URL。它适合减少低价值路径、重复筛选页、接近 staging 的目录或不希望被抓取的生成页。
但如果别的页面链接到了这个 URL,搜索引擎仍然可能知道它存在。它可能不抓取内容,却仍然显示这个 URL。
noindex 做什么?
noindex 是索引指令,可以放在 meta robots 标签或 HTTP header 里。它告诉搜索引擎不要把页面放进搜索结果。
例如:
noindex, follow
意思是这个页面不应被索引,但页面上的链接仍可继续跟随。
要让 noindex 生效,爬虫通常需要能访问页面。如果你先用 robots.txt 屏蔽了页面,爬虫可能永远看不到页面里的 noindex。
应该用哪个?
| 目标 | 更适合的做法 |
|---|---|
| 阻止抓取某个目录 | robots.txt Disallow。 |
| 让页面退出搜索结果 | noindex。 |
| 保护私密页面 | 登录权限,而不是 robots.txt。 |
| 减少抓取浪费 | robots.txt 加内链清理。 |
| 隐藏 staging 内容 | 密码保护,或 noindex 加访问控制。 |
robots 规则是公开的。不要把敏感路径写进 robots.txt 后,以为别人看不到。
常见错误
最常见错误是:屏蔽一个 URL,然后期待它从搜索结果里消失。如果这个 URL 已经被索引,阻止抓取反而可能让爬虫看不到你后来加的 noindex。
更稳妥的去索引流程通常是:
- 允许爬虫访问页面。
- 添加
noindex。 - 等待重新抓取和移除。
- 再决定是否还需要阻止抓取。
如果是紧急移除,可以配合搜索引擎提供的移除工具。
AI 爬虫也要单独考虑
不同 AI 爬虫对 robots 规则和引用逻辑的处理不完全一样。如果目标是获得 AI 引用,屏蔽相关页面可能减少被引用机会。如果目标是阻止训练或访问,就要把这个业务选择写清楚。
需要时可以针对不同 bot 写不同规则,并在内容策略变化时复查。
私密内容需要访问控制
无论是 Disallow 还是 noindex,都不是安全功能。如果页面必须保密,就应该使用登录、权限控制,或者不要把它放在公开网络上。
这对 staging 站点、草稿报告、内部工具、客户文件和后台路径尤其重要。写在 robots.txt 里的 URL 仍然可能被猜到、被别人链接、出现在日志里,或者被拿到地址的人直接打开。
要把 robots 规则当成爬虫说明,而不是门锁。
修改规则前问自己
改规则前可以先问:
- 我们是想停止抓取,还是停止索引?
- 这个页面是否已经被索引?
- 爬虫是否需要访问页面才能看到 noindex?
- 站内是否还有链接指向被屏蔽路径?
- robots.txt 是否暴露了敏感 URL?
正确做法取决于页面当前状态,而不只是你希望它最终变成什么状态。
对已经公开过的页面,去索引需要时间。不要今天加规则,明天就假设搜索结果一定消失。应该用 Search Console 或对应搜索引擎工具确认状态。
典型场景
如果是筛选参数页、排序页、内部搜索结果页,目标通常是减少抓取浪费,Disallow 可能合适。
如果是已经出现在搜索结果里的旧感谢页、测试页或低质量页面,目标是去索引,应该优先考虑 noindex。
如果是 staging 站点,仅靠两者都不够。应该先加登录、IP 限制或其他访问控制,再把 noindex 作为补充。
如果内容已经删除,要正确返回 HTTP 状态码或设置有意图的重定向。robots 规则不能替代坏链接清理。
对 AI 爬虫也一样,先明确目标:是不想被训练、不想被引用,还是只是不想浪费抓取。目标不同,规则就不同。
修改后要记录日期和原因。几个月后复查时,你才能知道这条规则是临时措施,还是长期策略。
常见问题
Disallow 会让页面从 Google 消失吗?
不可靠。它管抓取,不管索引。想从结果里移除,应使用 noindex。
robots.txt 是私密的吗?
不是。它是公开文件,任何人都可以访问 /robots.txt。
Disallow 和 noindex 可以一起用吗?
有时可以,但要小心。如果 Disallow 阻止抓取,爬虫可能看不到 noindex。