rel="nofollow" 是告知搜索引擎不传递权重的链接属性,用于用户生成内容、广告链接等场景;需正确书写为 rel="nofollow",配合 target="_blank" 时应叠加 noopener noreferrer。

rel="nofollow" 是什么,什么时候该用
rel="nofollow" 是 <a> 标签的一个属性值,告诉搜索引擎“这个外链不背书、不传递权重”,爬虫通常不会顺着它抓取目标页面。但它不是强制指令,只是建议;主流搜索引擎(如 Google)会尊重,但不保证 100% 不抓——尤其当其他页面也链接到同一地址时。
常见该用的场景包括:
- 用户生成内容里的外链(评论、论坛帖子)
- 广告或付费推广链接(
rel="nofollow sponsored"更规范) - 你无法控制内容可信度的第三方跳转(比如“友情链接”模块里未审核的站点)
怎么写才有效:语法和常见错误
必须写在 <a> 标签里,且 rel 值是空格分隔的字符串,不是布尔开关:
✅ 正确:
<a href="<a href="https://www.php.cn/link/b05edd78c294dcf6d960190bf5bde635">https://www.php.cn/link/b05edd78c294dcf6d960190bf5bde635</a>" rel="nofollow">外部链接</a>
立即学习“前端免费学习笔记(深入)”;
❌ 错误写法(这些都不生效):
-
rel="no follow"(带空格 → 解析失败) -
rel=nofollow(缺引号 → HTML 无效) -
rel="nofollow me"(me是另一个语义,混用可能干扰解析) -
<a href="..." rel="nofollow"></a>但 href 是相对路径或空值(如href="#"),爬虫根本不会尝试抓取,加rel="nofollow"没意义
要不要加 rel="noopener noreferrer" 一起用?
如果链接用了 target="_blank",强烈建议同时加 rel="noopener noreferrer":
-
noopener防止新页面通过window.opener访问原页面 DOM(安全漏洞) -
noreferrer阻止 Referer 头泄露来源 URL(隐私/反追踪)
组合写法:
<a href="<a href="https://www.php.cn/link/b05edd78c294dcf6d960190bf5bde635">https://www.php.cn/link/b05edd78c294dcf6d960190bf5bde635</a>" target="_blank" rel="nofollow noopener noreferrer">安全外链</a>
注意顺序无关,但三者共存时,rel 值就是这三个词用空格拼起来。单独只写 rel="nofollow" 对 target="_blank" 链接来说,是留了安全隐患的。
它真能阻止爬虫抓取目标页吗?
不能绝对阻止。Google 明确说过:rel="nofollow" 是“提示”,不是 robots.txt 那样的指令。如果目标页被其他没加 nofollow 的页面链接,它依然可能被发现和索引。
真正想屏蔽抓取,得靠:
- 目标站的
robots.txt(对方控制) - 自己页面用
meta name="robots" content="noindex"(对目标页无效) - 或干脆不暴露链接(比如用 JS 跳转 + 事件拦截,但对 SEO 和可访问性都不友好)
所以别指望 rel="nofollow" 当防火墙用,它只管“这条链不投票”,不管“别人能不能找到那个页面”。
实际部署时,最容易忽略的是:动态生成的链接(比如 CMS 输出、JS 渲染的评论列表)经常漏加 rel="nofollow",而人工写的静态链接反而都加上了。



















