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

WordPress重写规则跳转异常,country参数丢失如何解决?

解决WordPress重写规则自动跳转问题

问题核心原因

出现/directors/usa自动跳转到/directors/的情况,主要是WordPress的规范URL(Canonical URL)机制在起作用——它会默认将非页面标准URL的请求重定向到官方认定的规范地址,同时原重写规则的正则写法和优先级设置也存在问题,导致参数无法被正确识别传递。

具体解决方案

1. 修正重写规则写法及优先级

原规则的.*前缀会导致匹配范围过宽、优先级偏低,改为更精准的正则,并提升规则优先级:

add_action('init', function () {
    // 注册country重写标签,定义参数格式
    add_rewrite_tag('%country%', '([^/]+)', 'country=');
    // 调整正则匹配逻辑,使用index.php作为跳转目标(WordPress标准写法),并设置top优先级
    add_rewrite_rule('^directors/([^/]+)/?$', 'index.php?pagename=directors&country=$matches[1]', 'top');
});

2. 禁用该页面的规范URL跳转

通过过滤器阻止WordPress对directors/{country}格式URL的自动跳转:

add_filter('redirect_canonical', function ($redirect_url, $requested_url) {
    // 匹配/directors/xxx格式的请求URL
    if (preg_match('#^/directors/[^/]+/?$#', $requested_url)) {
        return false; // 禁止自动跳转
    }
    return $redirect_url;
}, 10, 2);

3. 刷新固定链接并验证步骤

  1. 登录WordPress后台,进入「设置」→「固定链接」页面
  2. 无需修改任何设置,直接点击「保存更改」,确保新的重写规则同步到.htaccess文件
  3. 访问/directors/usa测试,此时应不会再跳转,参数可正常传递

4. 验证参数是否生效

在directors页面的模板文件中添加测试代码,确认参数能正常获取:

$country = get_query_var('country');
if ($country) {
    echo '当前选中国家:' . esc_html($country);
} else {
    echo '未选择国家';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:24:54