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

能否在WordPress中基于子域名配置rewrite_rule重写规则?

当然可以!在WordPress中基于子域名创建rewrite_rule规则完全能实现你要的需求——让不同子域名下的相同路径映射到不同页面ID。我来给你详细拆解实现步骤:

第一步:注册自定义Rewrite规则与查询变量

首先,我们需要通过init钩子添加rewrite规则,同时处理子域名到页面ID的映射逻辑。把下面的代码添加到你的主题functions.php文件或者自定义插件中:

function custom_subdomain_page_rewrite() {
    // 添加rewrite规则:匹配 /page/cat/ 路径
    add_rewrite_rule(
        '^page/cat/?$',
        'index.php?page_id=' . get_subdomain_mapped_page_id(),
        'top' // 设置为top确保规则优先被匹配
    );
}
add_action('init', 'custom_subdomain_page_rewrite');

第二步:编写子域名到页面ID的映射逻辑

接下来,我们需要一个函数来根据当前请求的子域名,返回对应的页面ID:

function get_subdomain_mapped_page_id() {
    // 获取当前请求的主机名
    $host = $_SERVER['HTTP_HOST'];
    // 拆分主机名提取子域名(比如从se.domain.eu中得到se)
    $domain_parts = explode('.', $host);
    $subdomain = $domain_parts[0];
    
    // 定义子域名与页面ID的映射关系
    $subdomain_page_map = [
        'se' => 1,
        'dk' => 2,
        // 这里可以随时添加更多子域名的映射规则
    ];
    
    // 返回匹配到的页面ID,默认返回0对应404页面
    return isset($subdomain_page_map[$subdomain]) ? $subdomain_page_map[$subdomain] : 0;
}

第三步:刷新Rewrite规则

添加代码后,必须刷新WordPress的rewrite规则才能让新规则生效:

  • 登录WordPress后台,进入「设置」→「固定链接」
  • 不需要修改任何设置,直接点击「保存更改」按钮即可

关键注意事项

  • 子域名解析:确保你的子域名(se.domain.eu、dk.domain.eu)已经正确解析到WordPress所在的服务器IP
  • 调试技巧:如果规则不生效,可以开启WP_DEBUG模式,或者在模板中用var_dump(get_query_var('page_id'))输出当前的页面ID,确认是否正确匹配
  • 灵活扩展:如果你的子域名格式更复杂(比如多段子域名),可以调整$domain_parts的提取逻辑,比如取倒数第三个部分(针对类似xxx.se.domain.eu的情况)

这样设置后,当用户访问se.domain.eu/page/cat/时,就会加载页面ID为1的内容;访问dk.domain.eu/page/cat/时则加载页面ID为2的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:59:00