WordPress中能否根据访客来源网站对其进行重定向?
在WordPress中完全可以根据访客的来源网站(HTTP Referer)执行重定向操作,常见的实现方案有两种:
方案1:使用重定向插件实现
不需要写代码,适合非技术用户操作:
- 大部分成熟的WordPress重定向插件都内置了Referer匹配规则,你只需要在插件的规则创建页选择「来源域名匹配」作为触发条件,设置对应要拦截的来源域名、匹配模式,再填写跳转目标地址保存即可。
- 配置完成后建议清理站点缓存,避免缓存插件提前返回页面内容导致重定向规则不生效。
方案2:自定义代码实现
灵活度更高,不需要额外安装插件,你可以将以下代码添加到当前活跃主题的functions.php文件中,也可以通过自定义代码片段插件引入:
add_action('template_redirect', 'custom_referer_based_redirect'); function custom_referer_based_redirect() { // 跳过已登录的管理员/用户,避免影响后台操作和正常登录用户体验 if (is_user_logged_in()) { return; } // 获取访客的来源地址 $user_referer = isset($_SERVER['HTTP_REFERER']) ? sanitize_text_field($_SERVER['HTTP_REFERER']) : ''; // 配置需要触发重定向的来源域名列表 $blocked_referer_domains = [ 'example.com', 'test-site.org' ]; // 配置跳转目标页面地址 $target_redirect_url = home_url('/target-page/'); // 匹配来源域名,符合条件则执行跳转 foreach ($blocked_referer_domains as $domain) { if (strpos($user_referer, $domain) !== false) { // 302为临时重定向,如需永久重定向可改为301 wp_redirect($target_redirect_url, 302); exit; } } }
- 代码中的
$blocked_referer_domains替换为你实际要匹配的来源域名,$target_redirect_url替换为对应的跳转地址即可。 - 注意HTTP Referer可被用户通过隐私插件、浏览器自定义配置修改或隐藏,因此该规则无法覆盖所有来源符合条件的访客,仅适用于普通场景的重定向需求。
内容的提问来源于stack exchange,提问作者CodeGear
相关产品推荐
相关产品推荐

