You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress实现EE地区用户单次重定向至/et页面的问题

解决WordPress EE国家用户单次重定向至/et页面的问题

问题根源分析

原代码触发无限循环的核心原因是:无论用户当前是否已处于/et/页面,只要检测到国家代码为EE就执行重定向,导致页面反复跳转;同时缺少“单次重定向”的控制逻辑,无法让用户自由切换回英文首页。

修正后的PHP代码(推荐方案)

通过添加当前页面判断和Cookie记录双逻辑,既解决循环问题,又实现单次重定向需求:

function wpml_lang_redirect() {
    // 跳过后台请求,避免影响管理员操作
    if (is_admin()) return;

    // 获取当前请求的URI(不含域名),判断是否已在目标页面
    $current_uri = $_SERVER['REQUEST_URI'];
    if (strpos($current_uri, '/et/') === 0 || $current_uri === '/et') {
        return;
    }

    // 检查是否已执行过重定向(通过Cookie标记)
    if (isset($_COOKIE['ee_redirect_completed'])) {
        return;
    }

    // 检测国家代码并执行重定向
    if (isset($_SERVER["MM_COUNTRY_CODE"]) && $_SERVER["MM_COUNTRY_CODE"] === 'EE') {
        // 设置Cookie,有效期1天(可根据需求调整时长)
        setcookie('ee_redirect_completed', '1', time() + 86400, COOKIEPATH, COOKIE_DOMAIN);
        // 重定向至目标页面
        wp_redirect(get_bloginfo('url') . "/et/");
        exit;
    }
}
add_action('template_redirect', 'wpml_lang_redirect');

代码关键逻辑说明

  • 避免循环:先判断当前页面是否为/et/,若是则直接终止逻辑,不再触发重定向。
  • 单次重定向控制:用Cookieee_redirect_completed记录用户是否已被重定向过,有效期内不会重复触发。
  • 后台兼容:跳过WordPress后台请求,防止干扰管理员正常操作。

.htaccess方案对比说明

虽然可以用.htaccess实现基于国家代码的重定向,但要完成“单次重定向”和“允许用户切换首页”的需求,需配合复杂的Cookie规则,灵活性远不如PHP方案:

# 仅当Cookie不存在、当前不在/et/页面、国家代码为EE时执行重定向
RewriteCond %{HTTP:MM_COUNTRY_CODE} ^EE$
RewriteCond %{REQUEST_URI} !^/et/
RewriteCond %{HTTP_COOKIE} !ee_redirect_completed=1
RewriteRule ^(.*)$ /et/ [R=302,L,CO=ee_redirect_completed:1:your-domain.com:86400:/]

方案优缺点

  • PHP方案:贴合WordPress生态,便于后续扩展(比如添加重置重定向的入口),调试更直观。
  • .htaccess方案:性能略优,但需手动修改服务器配置文件,对非技术人员不友好,且无法动态调用WordPress内部函数获取域名等信息。

额外优化建议

若需让用户主动重置重定向逻辑(比如再次触发EE国家的定向),可在语言切换区添加重置链接:

<a href="/?clear_redirect_cookie=1">重置语言定向</a>

然后在wpml_lang_redirect函数开头添加Cookie清除逻辑:

if (isset($_GET['clear_redirect_cookie']) && $_GET['clear_redirect_cookie'] === '1') {
    setcookie('ee_redirect_completed', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN);
    wp_redirect(get_bloginfo('url'));
    exit;
}

内容的提问来源于stack exchange,提问作者user3615851

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:10:30