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

WordPress标签URL去-en重写后出现404问题求助

解决带-en后缀标签URL的404问题

你的问题核心在于重写规则参数错误、规则范围太窄,以及不必要的重复刷新规则操作。下面是针对性的修复方案:

1. 优化标签链接显示逻辑

保留你原有的tag_link钩子,调整后确保只处理英文语言下的标签,避免影响其他场景:

function update_term_link($permalink, $tag) {
    // 仅匹配en语言下带-en后缀的标签URL
    if (strpos($permalink, '/en/tag/') !== false && strpos($permalink, '-en/') !== false) {
        $permalink = str_replace('-en/', '/', $permalink);
    }
    return $permalink;
}
add_filter('tag_link', 'update_term_link', 20, 2); // 提高优先级,确保覆盖其他可能的链接修改

2. 添加通用重写规则

替换你之前的固定URL规则,改成能匹配所有带-en后缀的标签请求,并映射到正确的标签查询:

function custom_tag_rewrite_rules() {
    // 匹配 /en/tag/xxx-en/ 格式的URL,捕获xxx部分作为标签别名
    add_rewrite_rule(
        '^en/tag/([^/]+)-en/?$',
        'index.php?tag=$matches[1]',
        'top'
    );

    // 如果只针对ID为480的单个标签,可替换为:
    // 'index.php?tag_id=480'
}
add_action('init', 'custom_tag_rewrite_rules');

3. 确保查询变量可识别(可选)

如果你的WordPress环境有自定义路由设置,注册查询变量确保系统能正确解析:

function custom_tag_query_vars($vars) {
    $vars[] = 'tag';
    return $vars;
}
add_filter('query_vars', 'custom_tag_query_vars');

4. 正确刷新重写规则

  • 禁止在init钩子中调用flush_rewrite_rules(),这会严重拖慢网站性能,还可能导致规则冲突。
  • 正确操作:登录WordPress后台,进入「设置」→「固定链接」,直接点击「保存更改」按钮(无需修改任何设置),系统会自动刷新重写规则。

原方法失败原因

  • 你使用的p=480是文章ID参数,但480是标签的term ID,应该用tag_id=480或tag=标签别名。
  • 规则仅匹配单个固定URL,无法覆盖所有带-en后缀的标签请求。
  • 每次init刷新规则会导致规则重复写入,反而破坏路由逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:32:34