noindex、nofollow、Disallow 在文档里长得很像,但在线上行为差别巨大。一个是「别出现在搜索结果里」,一个是关于链接信号的提示,一个是「连抓都别抓」。选错了,要么页面漏进索引,要么抓取预算被垃圾页消耗光,要么把页面藏到 Google 连「丢掉」都做不到。
一句话结论
- 想让页面从结果里消失: 用
noindex(meta 标签或X-Robots-Tag响应头)。务必确认 robots.txt 没有同时屏蔽这个 URL,否则 Google 根本看不到这条指令。 - 想让爬虫完全跳过某个重路径: 在 robots.txt 用
Disallow,并接受一个事实——如果有外链指向它,URL 仍可能没摘要地出现。 - 想停止为某条链接背书: 用
rel="nofollow",或更精确的rel="sponsored"/rel="ugc"。截至 2026 年 6 月,这些是「提示」,不是硬性指令。 - 绝对不要在同一个 URL 上同时挂
noindex和Disallow。屏蔽会让 Google 读不到noindex,URL 反而卡死在索引里。
三个机制,三个问题
这三个控制项源自三个不同年代、三个不同的问题。
| 控制项 | 写在哪里 | 做什么 | 抓取阶段 |
|---|---|---|---|
Disallow | robots.txt | 「别抓这个路径」(1994 年的原始 robots 标准) | 抓取之前 |
noindex | <meta> 标签或 X-Robots-Tag HTTP 头 | 「抓可以,但别放进搜索结果」 | 抓取之后 |
nofollow / sponsored / ugc | 单条链接上的 rel 属性 | 「不为这条链接背书 / 不通过它传信任」 | 逐条链接 |
它们写在不同文件里、在不同阶段触发、解决不同问题。最大的误区是把「阻止抓取」和「阻止收录」当成同一根杆子——其实它们正好相反:Disallow 阻止抓取,noindex 需要先被抓到。
怎么判断自己遇到的是哪个问题
- staging 页、购物车页或感谢页出现在
site:yoursite.com结果里。 - Search Console 的 Pages 报告里有 「Indexed, though blocked by robots.txt」——两头都没占到的最差状态。
- 想藏页面,给 robots.txt 加了
Disallow,URL 还是出现在结果里,只是没了描述。 - 登录、购物车、admin 这类不该收录的页面在内链里吸走链接权重。
Disallow vs noindex 的陷阱
这是最常见的一个 bug,Google 官方文档也直接点名:「要让 noindex 规则生效,页面不能被 robots.txt 屏蔽。」
想藏一个页面,于是在 Disallow 里加上它。Google 听话,不再抓——但这个 URL 之前已经收录过了,现在 Google 抓不到页面,就看不到你顺手加的 noindex。结果 URL 永远留在索引里,只是没了摘要。
修复有严格的顺序:
- 先删掉 robots.txt 里的
Disallow。 - 加上
noindex(meta 标签或响应头),让 Google 重新抓。 - 等 URL 下架后,再视情况加回
Disallow(如果你还想顺带阻止抓取)。
<!-- 页面级 noindex:「别展示这页」最稳的默认值 -->
<meta name="robots" content="noindex, follow">
# robots.txt——阻止抓取,但不阻止收录
User-agent: *
Disallow: /search?
Disallow: /admin/
如果你只针对 Google,可以指定它的爬虫:<meta name="googlebot" content="noindex">。而普通的 robots 值对所有遵守规范的爬虫都生效,所以一般优先用它,除非有特别理由。
什么时候该用 nofollow
nofollow 是链接级别的,不是页面级别的。它说的是「我不为这条链接的去向背书」或「这是付费投放」。自 Google 2019 年 9 月的调整(2020 年 3 月 1 日起生效)以来,nofollow、sponsored、ugc 被当作提示而非硬性命令——Google 仍可能抓取目标页并用它做上下文判断。它们能稳定地不传递排名信任,但不再保证链接被完全忽略。
用在你编辑上不背书的外链上:
<a href="https://example.com" rel="nofollow">不背书的去向</a>
<a href="https://partner.com" rel="sponsored">付费投放</a>
<a href="https://forum-comment.com" rel="ugc">用户评论</a>
当一条链接既是用户生成又是付费时,可以组合写:rel="ugc sponsored"。不要用 nofollow 去「省链接权重」给外链数量封顶——那套玩法早就失效,现在反而像作弊信号。
决策表
| 目标 | 用这个 | 注意事项 |
|---|---|---|
| 不想出现在结果里,但允许 Google 抓 | 只用 noindex | robots.txt 不能屏蔽这个 URL |
| 爬虫永远别抓某个重路径 / 无限组合 | 只用 Disallow | URL 仍可能没摘要地出现 |
| 停止通过一条链接传信任 | nofollow / sponsored / ugc | 截至 2026 年 6 月是提示,不是指令 |
| 让页面彻底消失 | 先 noindex、重新抓取、再视情况 Disallow | 或返回 410 Gone / 直接删除 |
| 让整个 staging 站不收录 | 用 X-Robots-Tag 响应头加 noindex,或挂 HTTP auth | 绝不能用裸的 Disallow: / |
非 HTML 文件用 X-Robots-Tag
noindex 有两种写法:<meta> 标签(HTML 页面用)和 X-Robots-Tag 响应头(其它一切用)。PDF、JSON 接口、图片、任何响应不是 HTML 的 URL 都挂不了 meta 标签,得在服务器或 CDN 层用响应头。
X-Robots-Tag: noindex, follow
Google 文档说这两种方式「效果相同」,按内容类型选方便的那个即可。具体在哪里设置:
- Firebase Hosting: 在
firebase.json的headers块里配一条带source通配(比如**/*.pdf)的规则。 - Nginx: 在对应的
location块里写add_header X-Robots-Tag "noindex, follow";。 - Cloudflare: 用 transform rule,或写一个追加这个响应头的 Worker。
各信号的生效时间
noindex下架: Googlebot 重新抓到并看到标签后,URL 通常 1–7 天内消失。问题卡在重新抓取本身——Google 文档明说「Googlebot 重访一个页面可能要好几个月」。用 URL Inspection → Request indexing 对该 URL 推一下能加速。Disallow生效: 下次抓取尝试时生效——热门站点几小时,小站点几天。nofollow生效: 下次抓取后信任立刻停止流出。已经传过去的 PageRank 不会回收。
如果你需要马上让某个东西消失,Search Console 里的 Removals 工具能快速隐藏一个 URL——但只维持大约 6 个月。它是临时遮罩,不是真正的移除。在窗口过期前,要配上一个永久信号(noindex、410 Gone 状态或直接删除),否则 URL 会回来。
还有一个反方向的常见意外:你去掉 noindex 期待页面立刻被收录,但 Google 还得重新抓到才知道。挑一个代表性 URL 去 Request indexing 推一下,其余的几周内跟上。
容易踩的坑
- 同一个 URL 同时挂
Disallow和noindex。 屏蔽阻止了抓取,Google 读不到noindex,URL 留在索引里。这是「Indexed, though blocked by robots.txt」的头号成因。 - 把
nofollow当成「别收录这个目标」的信号。 它管的是链接信任,不管目标页的收录。 - 把 staging 的
Disallow: /带上线。 线上站默默拒绝抓取好几周,直到有人发现流量见底。 - 临时屏蔽用过的共享 layout 模板里残留
noindex, 然后纳闷为什么整站从搜索结果里消失。 - 在 canonical 替代页面上加
noindex(分页?page=2、语言版本),把合法内容也下架了。 - 只靠 Removals 工具。 它大约 6 个月就过期,没有永久修复的话页面会回来。
FAQ
Disallow了 URL 是否还会出现在搜索结果?:有时会。如果有外链指向它,Google 可能只列出裸 URL、没有描述。「完全别出现在搜索里」要用noindex。noindex, nofollow一起用合理吗?:很少合理。noindex已经把页面从结果里去掉,再加nofollow会把通往你自己内容的站内链权也封死。默认用noindex, follow,除非你真要彻底封闭。rel="sponsored"和nofollow有什么区别?:都表示「不传信任」,但sponsored专门声明这是付费投放。准确时 Google 更偏好精确属性,而且截至 2026 年 6 月三者都是提示而非硬规则。noindex后多久从索引里消失?:一般在 Google 重新抓到标签后 1–7 天——但重新抓取本身可能要几周。用 URL Inspection → Request indexing 加速。- Removals 工具和
noindex有什么不同?:Removals 工具是快速、临时的隐藏(约 6 个月)。noindex才是永久修复。需要某个东西立刻且彻底消失时,两个一起用。 - 薄弱的标签、分类页要不要
noindex?:只在它们真没价值时。3 篇文章的薄弱标签页应该合并,而不是 noindex。把noindex当兜底手段。
相关阅读
外部参考:Google 的 noindex 文档 和 Google 关于标注外链的指南。