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

如何通过.htaccess将WordPress指定页面/栏目重写映射到子域名

问题核心原因
  • 仅添加A记录无效:SiteGround需要在站点管理后台将new.domain.com的文档根目录绑定到主站的根目录(即存放wp-config.php的目录,默认是public_html),否则服务器无法识别子域名对应的站点资源,会返回找不到服务器错误。
  • 原规则缺失内部重写逻辑:你之前写的只有跳转规则,没有处理子域名访问时内部映射到/new目录的逻辑,就算子域名绑定正确也会出现404。
配置步骤

1. SiteGround子域名绑定

登录SiteGround的Site Tools面板,进入Domain > Subdomains,新增子域名new.domain.com,将其**Root Path(根路径)**设置为主站的根目录,不要使用默认生成的public_html/new路径。

2. .htaccess规则配置

将以下规则放在.htaccess文件的最顶部,放在WordPress默认的重写规则之前,替换domain.com为你自己的实际域名:

# 1. 旧路径自动跳转到子域名(解决需求3)
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/new(/.*)?$ [NC]
RewriteRule ^new/(.*)$ https://new.domain.com/$1 [R=301,L]

# 2. 子域名内部映射到/new目录(解决需求1、2,地址栏不变无跳转)
RewriteCond %{HTTP_HOST} ^new\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/new/ [NC]
RewriteRule ^(.*)$ /new/$1 [L]

3. WordPress适配(可选,更稳定)

如果不想频繁调整重写规则,或者出现链接生成异常,可以将以下代码添加到当前主题的functions.php文件末尾,替换domain.com为实际域名:

// 替换/new栏目及其子页的输出链接为子域名格式
add_filter('post_link', 'custom_new_permalink', 10, 2);
add_filter('page_link', 'custom_new_permalink', 10, 2);
function custom_new_permalink($permalink, $post) {
    $new_page_id = get_page_by_path('new')->ID;
    $is_new_section = ($post->ID == $new_page_id) || (wp_get_post_parent_id($post->ID) == $new_page_id);
    if ($is_new_section || strpos($permalink, 'domain.com/new/') !== false) {
        $permalink = str_replace('domain.com/new', 'new.domain.com', $permalink);
    }
    return $permalink;
}

// 修正子域名下的请求解析,避免404
add_action('init', 'custom_new_parse_request');
function custom_new_parse_request() {
    if ($_SERVER['HTTP_HOST'] == 'new.domain.com') {
        $_SERVER['REQUEST_URI'] = '/new' . $_SERVER['REQUEST_URI'];
    }
}
验证操作

配置完成后依次清理:SiteGround服务器缓存、WordPress站点缓存、浏览器本地缓存,再测试三个需求是否全部生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:24:03