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

WordPress 6.2.2:多站点配置中相对URL跳转异常问题

WordPress多站点子站点根相对URL跳转错误的解决办法

问题原因

以/开头的根相对URL是基于域名根目录解析的,所以在子站点xyz.com/jp中使用/puzzle/会直接指向主站根目录下的puzzle页面,而非子站点路径下的对应页面。以下是几种可行的解决方式:

1. 使用WordPress内置函数生成正确链接(推荐)

避免手动硬写相对路径,利用WordPress自带的URL生成函数,自动适配当前子站点的路径:

  • 针对已有页面/文章:使用get_permalink()函数,传入页面的路径或ID获取正确链接。例如:
    // 获取路径为puzzle的页面链接
    echo get_permalink( get_page_by_path('puzzle') );
    
  • 针对自定义路径:使用home_url()函数,它会基于当前站点的「首页URL」拼接路径。例如:
    // 生成当前子站点下的/puzzle/链接
    echo home_url('/puzzle/');
    
    对于子站点xyz.com/jp,这段代码会输出xyz.com/jp/puzzle/。

2. 调整手动链接的写法(仅适用于简单场景)

如果必须手动写链接,不要使用根相对的/puzzle/,改用相对当前页面的路径:

  • 若当前在子站点首页(xyz.com/jp),直接写puzzle/(不带开头的/),会跳转到xyz.com/jp/puzzle/。
  • 注意:这种方式在页面层级较深时容易出错(比如当前在xyz.com/jp/about/,写puzzle/会跳转到xyz.com/jp/about/puzzle/),因此仅推荐在简单场景下使用。

3. 确认站点基础配置正确性

先检查子站点的URL设置是否正确,避免因配置错误导致链接解析异常:

  • 进入子站点后台→「设置」→「常规」,确保「WordPress地址(URL)」和「站点地址(URL)」均为xyz.com/jp。
  • 进入多站点网络管理后台→「站点」→编辑对应子站点,确认「路径」设置为/jp/。

4. 批量修正硬写的根相对链接(可选)

如果已有大量硬写的/xxx/格式链接,可通过添加过滤器自动修正。在当前主题的functions.php中加入以下代码:

add_filter('site_url', 'fix_subsite_root_relative_url', 10, 3);
function fix_subsite_root_relative_url($url, $path, $scheme) {
    if (is_multisite() && $path && str_starts_with($path, '/')) {
        $blog_details = get_blog_details();
        if ($blog_details->path !== '/') {
            $url = get_site_url() . ltrim($path, '/');
        }
    }
    return $url;
}

该过滤器会在生成站点URL时,自动将根相对路径拼接到当前子站点的路径后,确保链接指向正确位置。

总结

最稳妥的方案是使用WordPress内置的URL生成函数,从根源避免手动写路径带来的适配问题。如果是历史遗留的硬写链接,可通过过滤器批量修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:27:10