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

如何强制子域名多站点创建新子站点时使用HTTPS?

强制子域名多站点创建时保留HTTPS协议(无需修改核心源码)

不用去碰ms-functions.php的核心代码,WordPress的钩子系统完全能搞定这个问题,分享几个经过验证的靠谱方案:

方案1:新站点创建后自动更新HTTPS选项

利用wpmu_new_blog钩子,在子站点创建完成后直接修改它的siteurl和home选项为HTTPS协议。把下面的代码添加到你的主题functions.php文件或者自定义功能插件里(更推荐用插件,避免主题更新导致代码丢失):

add_action('wpmu_new_blog', 'force_subsite_https_on_creation', 10, 6);
function force_subsite_https_on_creation($blog_id, $user_id, $domain, $path, $site_id, $meta) {
    switch_to_blog($blog_id);
    
    // 更新siteurl和home为HTTPS协议
    update_option('siteurl', 'https://' . $domain . $path);
    update_option('home', 'https://' . $domain . $path);
    
    restore_current_blog();
}

这个钩子会在每个新子站点创建后立即触发,自动替换协议为HTTPS,完全绕过核心代码里的限制。

方案2:全局强制HTTPS输出(防止协议回退)

为了避免某些场景下(比如插件修改、手动操作)协议变回HTTP,你可以再加两个过滤器,确保所有site_url和home_url的输出都是HTTPS:

add_filter('site_url', 'force_https_site_url', 10, 4);
function force_https_site_url($url, $path, $scheme, $blog_id) {
    return str_replace('http://', 'https://', $url);
}

add_filter('home_url', 'force_https_home_url', 10, 4);
function force_https_home_url($url, $path, $scheme, $blog_id) {
    return str_replace('http://', 'https://', $url);
}

方案3:确保WordPress检测到HTTPS环境

如果你的站点是在反向代理、CDN或者负载均衡后面运行,WordPress可能无法正确识别HTTPS环境,这时候需要在wp-config.php里添加一行代码,强制让WordPress认为当前是HTTPS连接:

$_SERVER['HTTPS'] = 'on';
// 针对反向代理场景的适配版本:
// if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
//     $_SERVER['HTTPS'] = 'on';
// }

这样WordPress在生成URL的时候会默认用HTTPS,从根源上减少协议错误的可能。

这些方法都不需要修改任何核心文件,完全符合WordPress的最佳实践,而且后续更新核心版本也不会影响功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:56:31