如何为配置Domain Masking的重定向页面实现HTTP转HTTPS?
域名掩码场景下HTTP转HTTPS的.htaccess配置方案
你的问题出在域名掩码的转发机制上:当用户访问http://mydomain.info时,请求会被转发到http://mydomain.com,此时你现有.htaccess里的%{SERVER_NAME}会指向mydomain.com,导致重定向后地址栏变成mydomain.com的HTTPS,而非保持mydomain.info。要实现「地址栏显示https://mydomain.info,内容加载自https://mydomain.com」的需求,需要修改.htaccess来识别用户实际访问的域名。
推荐配置方案
替换现有.htaccess内容为以下代码:
RewriteEngine On # 强制HTTP转HTTPS,保留用户访问的原始域名 RewriteCond %{HTTPS} !=on # 优先读取代理转发的原始域名,兼容域名掩码场景 RewriteCond %{HTTP:X-Forwarded-Host} ^(.*)$ [OR] # 若没有代理头,直接读取请求头里的域名 RewriteCond %{HTTP_HOST} ^(.*)$ # 重定向到对应域名的HTTPS地址 RewriteRule ^/?(.*) https://%1/$1 [R=301,L]
配置说明
%{HTTP:X-Forwarded-Host}:域名掩码本质是反向代理,这个请求头会携带用户实际输入的域名(比如mydomain.info),确保重定向目标正确。%1:引用前面匹配到的域名,不管用户访问的是.com还是.info,都会跳转到对应域名的HTTPS版本。R=301:永久重定向,适合生产环境;如果只是测试,可改成R=302临时重定向。
备选方案(如果主机不支持代理头)
如果你的主机控制面板没有传递X-Forwarded-Host头,可以直接指定两个域名匹配:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.(com|info)$ RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L]
额外注意
记得在主机控制面板里,把mydomain.info的域名掩码目标改成https://mydomain.com,而非HTTP,这样转发过来的请求本身就是HTTPS,避免二次跳转。
内容的提问来源于stack exchange,提问作者Michael Neumair
相关产品推荐
相关产品推荐

