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

如何实现网站指定页面重定向,避免URL自动补全?

解决WordPress中/br路径被自动补全匹配文章的重定向问题

问题背景

删除了为网站添加/br/路径的插件后,设置重定向规则去除URL中的/br/以兼容旧链接,但访问www.twodogs.com/br或www.twodogs.com/br/时,WordPress会自动将其补全为以br开头的博客文章(例如跳转至https://twodogs.com/brasil-caiu-16-posicoes-no-ranking-global-da-felicidade/),现有代码无法拦截该自动补全行为。

现有代码问题

原代码使用template_redirect钩子,而WordPress负责自动补全URL的redirect_canonical钩子会在其之前触发,导致重定向逻辑还未执行就已经跳转到匹配文章;同时仅匹配包含/br/的路径,无法处理/br(无结尾斜杠)的请求。

修改后的解决方案

替换原有代码为以下内容,通过更早的钩子拦截请求,并覆盖所有/br和/br/开头的路径:

function corrigir_redirecionamento_br() {
    $request_uri = $_SERVER['REQUEST_URI'];
    // 匹配以/br或/br/开头的所有请求路径
    if (preg_match('#^/br(/.*)?$#', $request_uri)) {
        // 移除开头的/br或/br/前缀
        $url_corrigida = preg_replace('#^/br/?#', '/', $request_uri);
        // 301永久重定向到修正后的URL
        wp_redirect(home_url($url_corrigida), 301);
        exit();
    }
}
// 使用init钩子,早于WordPress的自动补全跳转触发
add_action('init', 'corrigir_redirecionamento_br');

补充:若自动补全仍触发的处理

如果上述代码仍无法阻止自动补全,可以临时在匹配路径时禁用WordPress的规范URL跳转功能:

function corrigir_redirecionamento_br() {
    $request_uri = $_SERVER['REQUEST_URI'];
    if (preg_match('#^/br(/.*)?$#', $request_uri)) {
        // 临时禁用规范URL自动补全
        remove_action('template_redirect', 'redirect_canonical');
        $url_corrigida = preg_replace('#^/br/?#', '/', $request_uri);
        wp_redirect(home_url($url_corrigida), 301);
        exit();
    }
}
add_action('init', 'corrigir_redirecionamento_br');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:45:07