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

WordPress多站点子站HTTP访问错误重定向至主站问题求助

WordPress多站点HTTP转HTTPS子站错误跳主站的解决方法

问题根源

HTTP访问子站时%{HTTP_HOST}返回主站域名,说明Apache的HTTP虚拟主机配置未正确匹配子站域名,导致所有HTTP请求默认走主站配置,重定向时误用主站域名。


解决步骤

1. 修正Apache HTTP虚拟主机配置(/etc/apache2/sites-available/000-default.conf)

确保配置中包含子站的域名解析,让Apache能识别子站的HTTP请求:

  • 方案一:在主站虚拟主机块添加子站别名
    <VirtualHost *:80>
        ServerName main-site.com
        ServerAlias child.org www.child.org
        DocumentRoot /var/www/html
    
        RewriteEngine On
        # 通用HTTPS重定向,保留请求的原始域名
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
    </VirtualHost>
    
  • 方案二:为子站单独创建虚拟主机块(更清晰)
    <VirtualHost *:80>
        ServerName main-site.com
        DocumentRoot /var/www/html
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName child.org
        ServerAlias www.child.org
        DocumentRoot /var/www/html
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
    </VirtualHost>
    
  • 启用rewrite模块并重启Apache:
    a2enmod rewrite
    systemctl restart apache2
    

2. 调整WordPress根目录.htaccess配置

确保重定向规则优先执行,且不硬编码主站域名:

RewriteEngine On
RewriteBase /

# 先处理HTTP转HTTPS的重定向
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 多站点核心规则
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

3. 检查HTTPS虚拟主机配置(/etc/apache2/sites-enabled/000-default-le-ssl.conf)

确保HTTPS配置也包含子站域名,避免HTTPS访问出现异常:

<VirtualHost *:443>
    ServerName main-site.com
    ServerAlias child.org www.child.org
    DocumentRoot /var/www/html

    # 保留原有SSL证书配置(如Let's Encrypt自动生成的内容)
    SSLCertificateFile /etc/letsencrypt/live/main-site.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/main-site.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

如果子站使用独立SSL证书,需单独创建对应虚拟主机块。

4. 验证MU Domain Mapping插件设置

  • 确认插件已正确添加child.org的域名映射,指向主站服务器IP
  • 开启插件中的Redirect administration pages to site's domain选项,确保后台跳转正常

5. 测试与缓存清除

  • 用隐私模式或清空浏览器缓存访问http://child.org,检查是否跳转到https://child.org
  • 用curl命令验证重定向:
    curl -I http://child.org
    
    正常返回的Location字段应为https://child.org

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:44:55