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

CentOS8下Apache配置HTTPS子域名虚拟主机重写规则方法

子域名"Not Secure"问题的配置调整方案

问题根源分析

当前仅配置了主域名example.com的HTTP跳转HTTPS规则,但子域名subdomain.example.com缺少对应的:

  1. 80端口虚拟主机的HTTP转HTTPS重写配置
  2. 443端口的HTTPS虚拟主机配置(含SSL证书绑定)
    另外,原主域名80端口配置存在语法错误,RewriteEngine On与RewriteRule写在同一行会导致重写规则不生效。

具体修复步骤

1. 修正主域名80端口虚拟主机配置

将原配置中错误的重写规则拆分,确保语法正确:

<VirtualHost *:80> 
    ServerName example.com 
    DocumentRoot /var/www/html/example/public 
    <Directory /var/www/html/example> 
        AllowOverride All 
    </Directory> 
    RewriteEngine On 
    RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L] 
</VirtualHost>

2. 添加子域名80端口跳转配置

新增一个80端口的虚拟主机,实现子域名的HTTP转HTTPS跳转:

<VirtualHost *:80>
    ServerName subdomain.example.com
    RewriteEngine On
    RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L]
</VirtualHost>

3. 配置子域名HTTPS虚拟主机

确保你拥有包含subdomain.example.com的SSL证书(通配符证书*.example.com或SAN证书均可),然后添加443端口的虚拟主机配置:

<VirtualHost *:443>
    ServerName subdomain.example.com
    # 根据子域名的实际网站目录修改DocumentRoot和Directory路径
    DocumentRoot /var/www/html/subdomain/public
    <Directory /var/www/html/subdomain>
        AllowOverride All
    </Directory>

    # SSL证书相关配置,替换为你的证书实际路径
    SSLEngine On
    SSLCertificateFile /etc/ssl/certs/your_certificate.crt
    SSLCertificateKeyFile /etc/ssl/private/your_private.key
    # 若存在证书链文件,取消下方注释并填写路径
    # SSLCertificateChainFile /etc/ssl/certs/your_chain.crt
</VirtualHost>

4. 验证配置并重启服务

  • 检查Apache配置语法:
    apachectl configtest
    
  • 若输出Syntax OK,重启Apache服务:
    systemctl restart apache2
    

额外注意事项

  • 确认子域名subdomain.example.com的DNS解析已指向当前服务器IP(可通过nslookup subdomain.example.com验证)
  • 确保服务器防火墙已开放443端口(HTTPS流量)
  • 若使用Let's Encrypt证书,可通过certbot --apache -d subdomain.example.com自动生成并配置证书

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:30:41