如何为所有外部链接添加nofollow并排除指定网站URL
用jQuery给外部链接添加nofollow并排除指定链接
直接上可运行的代码,配合注释说明逻辑:
$(document).ready(function() { // 获取当前网站的域名,用来区分内外链接 const currentDomain = window.location.hostname; // 筛选目标链接:所有外部链接,排除页脚中指向www.developer.com的链接 $('a') // 排除页脚里的指定域名链接,这里的footer选择器请根据实际页面结构调整 .not('footer a[href*="www.developer.com"]') // 过滤出真正的外部链接 .filter(function() { const linkHost = this.hostname; // 排除空链接、锚点链接,只保留域名和当前站点不同的链接 return linkHost && linkHost !== currentDomain; }) // 给符合条件的链接添加nofollow属性 .each(function() { let relAttr = $(this).attr('rel') || ''; // 避免重复添加nofollow if (!relAttr.includes('nofollow')) { relAttr = relAttr ? `${relAttr} nofollow` : 'nofollow'; $(this).attr('rel', relAttr); } }); });
关键细节说明:
- 页脚选择器调整:如果你的页脚不是用
<footer>标签,而是类名(比如.site-footer),把footer改成对应的选择器即可,比如.not('.site-footer a[href*="www.developer.com"]')。 - 精确匹配域名:如果要严格匹配以
https://www.developer.com开头的链接,把[href*="www.developer.com"]换成[href^="https://www.developer.com"],避免匹配到包含该域名的其他链接。 - 保留原有rel属性:代码会检查链接已有的rel值,只追加nofollow,不会覆盖noopener、noreferrer这类常用属性。
- 动态内容处理:如果页面有AJAX加载的内容,需要把这段代码放到内容加载完成的回调里,或者用事件委托监听链接的添加事件。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

