
在 next.js 中,可通过将按钮包裹在 `` 标签中并设置 `target="_blank"` 和 `rel="noreferrer"` 实现安全、合规的外部链接新开标签页跳转。
在 Next.js(尤其是 App Router 或 Pages Router)中,不推荐直接用 onClick + window.open() 或 router.push() 跳转外部 URL,因为这会绕过浏览器原生导航机制,且存在安全与可访问性风险。最标准、语义正确且符合 Web 最佳实践的方式是:使用 标签作为容器,嵌套按钮元素,并配置正确的属性。
✅ 正确做法如下:
@@##@@Go To Google
@@##@@
⚠️ 关键说明:
- href 必须为完整绝对 URL(如 https://www.php.cn/link/b57f7e3c691e9086caa881b52de2a661),相对路径无效;
- target="_blank" 触发新标签页打开(注意:部分浏览器可能改为新窗口,取决于用户设置);
- rel="noreferrer noopener" 是必需的安全补充:
- noreferrer 防止目标页面通过 document.referrer 获取来源页信息;
- noopener 防止新页面通过 window.opener 访问原始页面上下文(避免潜在的性能与安全漏洞,如恶意页面调用 opener.location.replace() 进行钓鱼);
- 图片路径使用 /assets/...(以 / 开头)表示从 public 目录服务静态资源,确保在构建后仍可访问;
- 为提升可访问性,建议为图标添加 alt 属性(如示例所示);
❌ 常见错误避免:
- ❌ 不要仅写 rel="noreferrer" —— 缺少 noopener 仍存在安全隐患;
- ❌ 不要在
- ❌ 不要省略协议(如写 href="google.com")—— 将被解析为相对路径,导致 404。
? 补充提示:若需在 App Router 中保持样式一致性(例如按钮本应是
综上,用语义化的 包裹交互式内容,既简洁可靠,又兼顾安全性、可访问性与 SEO,是 Next.js 项目中处理外部跳转的首选方案。











