WordPress全站外部链接自动添加rel='nofollow'问题求助
WordPress全站外部链接自动添加rel='nofollow'的排查与解决思路
可能的原因范围
问题不一定直接源于服务器或Plesk配置,但需要同时排查WordPress核心配置、服务器级输出过滤、Plesk的SEO相关设置这几个维度——毕竟你已经排除了插件和主题的影响。
排查步骤
1. 排查WordPress核心及隐藏配置
- 检查Must-Use插件:查看
wp-content/mu-plugins目录,这里的插件无法通过后台停用,可能存在自动添加nofollow的代码。如果有可疑文件,临时移走后刷新页面测试。 - 检查wp-config.php:搜索是否存在自定义常量,比如
define('WP_EXTERNAL_LINK_NOFOLLOW', true);这类强制添加nofollow的定义,若有则注释或删除。 - 检查核心钩子残留:通过FTP或Plesk文件管理器,查看是否有未被清理的自定义过滤器代码(比如曾在主题/插件中添加的
the_content、nav_menu_link_attributes钩子),这类代码可能被写入了非主题/插件的位置(优先排查mu-plugins和wp-config,不建议修改WordPress核心文件)。 - 验证阅读设置:进入WordPress后台「设置→阅读」,确认未勾选「对搜索引擎隐藏站点」——虽然你的meta标签是
noindex,follow,但这个选项可能会触发额外的链接处理规则。
2. 排查服务器及Plesk配置
- Plesk SEO设置:登录Plesk面板,进入「网站与域名→搜索引擎优化(SEO)」,检查是否开启了「自动为外部链接添加nofollow属性」之类的选项,若有则关闭。
- 服务器优化模块:
- 若使用Apache,检查是否启用了
mod_pagespeed模块,该模块的RewriteExternalLinks规则会自动给外部链接加nofollow。可以通过a2dismod pagespeed禁用模块,或修改pagespeed.conf关闭对应规则。 - 若使用Nginx,检查配置文件中是否存在
sub_filter指令,是否有替换HTML链接添加nofollow的规则,找到后注释或删除。
- 若使用Apache,检查是否启用了
- 缓存与CDN:如果启用了Plesk自带缓存或第三方CDN,清除所有缓存,同时检查缓存服务的优化选项,是否有自动处理链接的设置。
- 安全软件规则:检查服务器上的ModSecurity等安全工具,是否有规则会修改HTML输出添加nofollow,可临时禁用ModSecurity测试是否解决问题。
解决方案
根据排查结果对应处理:
- WordPress内部问题:删除mu-plugins/wp-config中添加nofollow的代码,或移除残留的钩子函数。如果需要手动移除全站外部链接的nofollow,可以在当前主题的
functions.php中添加以下代码(即使是默认主题也可临时添加测试):function remove_nofollow_from_external_links($content) { return preg_replace('/rel="nofollow"/i', '', $content); } add_filter('the_content', 'remove_nofollow_from_external_links'); add_filter('nav_menu_link_attributes', function($atts) { unset($atts['rel']); return $atts; }); add_filter('widget_text', 'remove_nofollow_from_external_links'); - 服务器/Plesk问题:关闭Plesk的自动nofollow选项,禁用或调整服务器优化模块的链接处理规则,清除缓存确保生效。
- 关于meta标签:
meta name='robots' content='noindex,follow'与外部链接的nofollow无关,但如果不需要noindex,可以在后台「设置→阅读」取消隐藏站点,或通过代码移除该meta:remove_action('wp_head', 'wp_no_robots');
内容的提问来源于stack exchange,提问作者Preprocezzor
相关产品推荐
相关产品推荐

