robots meta 的 nofollow 是无效写法,因该值非合法 robots 指令;正确做法是对单个链接用 rel="nofollow",整页控制则用 noindex, nofollow 组合或 HTTP 头。

robots meta 的 nofollow 是无效写法
HTML 的 <meta name="robots"> 不支持单独设为 nofollow。这个值本身不是合法的 robots 指令 —— nofollow 是用于 <a> 标签的 rel 属性,不是 robots 的 content 值。
常见错误是这么写:
<meta name="robots" content="nofollow">
浏览器和搜索引擎会忽略它,或当作无效指令处理。真正能用的 robots 指令只有:noindex、nofollow(注意:这是历史遗留歧义点,下面细说)、none、all,以及组合如 noindex, nofollow。
想禁止爬虫跟踪页面内链接,该用 nofollow 还是 nofollow?
这里容易混淆:robots meta 中的 nofollow 确实存在,但它含义是「不跟踪本页所有出站链接」,不是「给单个链接加 nofollow」。而且它已被主流搜索引擎弃用或弱化支持:
立即学习“前端免费学习笔记(深入)”;
- Google 自 2019 年起明确表示:
nofollow在robotsmeta 中被忽略,只认noindex和none(等价于noindex, nofollow) - Bing 仍解析
nofollow,但仅作为提示,不保证执行 - 实际效果远不如在每个
<a>上显式加rel="nofollow"
所以:如果目标是让爬虫不跟踪页面里的链接,正确做法是:
- 对单个链接加
rel="nofollow":<a href="https://example.com" rel="nofollow">外部链接</a>
- 若整页都不希望出链被跟踪,且需兼容旧 crawler,可保留但不依赖:
<meta name="robots" content="noindex, nofollow">
(注意必须搭配noindex或其它有效指令,单独nofollow无效)
robots meta 的合法 content 值有哪些
只认这些组合(大小写不敏感,空格和逗号分隔):
-
all(默认行为,等价于不写该 meta) -
noindex:不收录本页 -
nofollow:提示不跟踪本页出链(如上所述,已基本失效) -
none:等价于noindex, nofollow -
noindex, follow:不收录本页,但可跟踪出链(常用在登录页/过滤页) -
index, nofollow:可收录,但不出链(极少用,Google 不支持该组合,会忽略 nofollow)
⚠️ 注意:index 和 follow 不必显式写出,它们是默认值;写出来也没错,但冗余。
更可靠的方式:用 HTTP 头或 robots.txt 配合
meta 标签易被忽视或覆盖,关键策略建议分层控制:
- 页面级屏蔽用
noindexmeta(最常用、最明确) - 链接级屏蔽用
rel="nofollow"(精准、即时生效) - 目录或路径级屏蔽改用
robots.txt:User-agent: *<br>Disallow: /private/<br>Disallow: /api/
- 需要强约束时,服务端返回
X-Robots-Tag: noindexHTTP 头(比 meta 更早生效,且适用于非 HTML 资源)
meta 的 nofollow 是个过时的、语义模糊的选项,现在几乎没理由单独用它。真要控制链接跟踪,就老老实实给 <a> 加 rel。



















