宝塔面板强制HTTPS开启后 导致其他域名无法访问和跳转的问题
技术教程 •
不知道大家有没有这样的状况:
就是一个站绑定了多个域名,但是都需要跳转到主域名上。如果在宝塔面板上开启了强制HTTPS,其他域名访问时会因为证书不正确,而无法访问也无法跳转的情况。
浏览器会出现隐私设置错误的提示:
以前让其他域名跳转到主域名,我是通过一条伪静态跳转规则实现的:
if ($host != 'wp.com.cn' ) {
rewrite ^/(.*)$ https://www.zwsq.com/$1 permanent;
}
为什么开启强制HTTPS后就证书错误无法跳转了呢?打开网站配置文件,我发现了问题。
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
这就是强制HTTPS的规则。但是,这个规则没有区分主域名啊。你什么域名访问,就直接到这个域名的https了。
解决方法有两个:
第一种:继续把跳转规则写在伪静态里面,然后把配置文件里的$host改成你的主域名。
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://wp.com.cn$1 permanent;
}
#HTTP_TO_HTTPS_END
第二种:把跳转规则写到配置文件的强制HTTPS规则前面,让他先执行。
if ($host != 'wp.com.cn' ) {
rewrite ^/(.*)$ https://www.zwsq.com/$1 permanent;
}
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END