rel="nofollow"仅提示搜索引擎不传递权重,不阻止爬虫抓取或用户跳转;真正防止反向劫持和referer泄露的是rel="noopener noreferrer",且必须与target="_blank"配合使用。

rel="nofollow" 本身不防跟踪,它只提示搜索引擎“别传权重”,对用户点击、浏览器跳转、爬虫是否抓取目标页都没强制约束力。真正能防反向劫持和 Referer 泄露的,是 rel="noopener noreferrer" ——而且必须跟 target="_blank" 一起用。
rel="nofollow" 不等于禁止访问或屏蔽爬虫
很多人误以为加了 rel="nofollow" 就能“挡住爬虫”或“不让别人点进去”。事实是:
-
rel="nofollow"是给搜索引擎的建议,不是指令;Google 会尊重,但若其他页面也链向同一地址,它仍可能抓取 - 用户点击照样跳转,前端完全无感知,也不影响 JS 动态生成的链接(搜索引擎基本不识别)
- 写错格式就失效:比如
rel=nofollow(缺引号)、rel="no follow"(带空格)、rel="NOFOLLOW"(虽不敏感但易被 lint 工具报错) - 它只对静态
<a></a>标签有效,<link>或 meta robots 不适用
target="_blank" 必须配 noopener + noreferrer
单独写 target="_blank" 存在 reverse tabnabbing 风险:新页面可通过 window.opener.location 修改原页面 URL,诱导钓鱼。安全写法只有:
<a href="https://example.com" target="_blank" rel="noopener noreferrer">外链</a>
注意:
-
rel="noopener"断开window.opener引用,是核心防护 -
rel="noreferrer"同时屏蔽 Referer 头,防止敏感路径泄露 -
rel="nofollow"可叠加,如rel="noopener noreferrer nofollow",顺序无关,空格分隔即可 - Lighthouse 和 ESLint 默认会警告缺失
noopener的target="_blank"
SEO 场景下该用哪些 rel 值组合
单纯防权重流失,rel="nofollow" 已够用;但现代 SEO 推荐更细粒度标注:
- 广告/付费链接:
rel="sponsored"(Google 明确支持),可叠加rel="sponsored nofollow" - 用户评论、论坛帖里的外链:
rel="ugc"(user-generated content) - 可信作者发布的链接,可去掉
ugc,仅保留rel="nofollow"或不加 - 百度仍识别
rel="noflow",但标准写法仍是rel="nofollow",无需兼容旧值
最容易被忽略的是:noopener 和 nofollow 解决的是完全不同维度的问题——一个保安全,一个管 SEO。混用没问题,但漏掉前者,哪怕写了十个 nofollow,页面照样有被劫持风险。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











