虚拟主机 http-to-https 重定向到错误的 ServerName

虚拟主机 http-to-https 重定向到错误的 ServerName

我在一台机器上托管了两个网站:foo.com 和 blank.test,我希望它们各自将 HTTP 流量重定向到相应的 HTTPS 网站。当我导航到其中一个网站时,会被重定向到另一个网站。

foo.com.conf:

<VirtualHost _default_:443>
    ServerName foo.com
    ServerAlias foo.com
    # ... etc
</VirtualHost>

<VirtualHost _default_:80>
    ServerName foo.com
    ServerAlias foo.com
    Redirect permanent / https://foo.com
</VirtualHost>

空白.测试.conf:

<VirtualHost _default_:443>
    ServerName blank.test
    ServerAlias blank.test
    # ... etc
</VirtualHost>

<VirtualHost _default_:80>
    ServerName blank.test
    ServerAlias blank.test
    Redirect permanent / https://blank.test
</VirtualHost>

眼下

为什么是http://foo.com重定向至https://blank.test

答案1

我认为这是因为命名虚拟主机依靠标头工作,并且启用 SSL 后,Apache 直到 SSL 协商后才会看到标头。所以我认为发生的事情是,在重定向时,您将转到具有优先权的域(即加载的顺序)。

您可以尝试这个,它应该(tm)强制它到正确的域:

<VirtualHost _default_:80>
ServerName foo.com
ServerAlias foo.com
RewriteCond %{HTTP_HOST} !=blank.test [NC]
RewriteCond %{HTTP_HOST} !=""
RewriteRule ^ https://foo.com/%{REQUEST_URI} [R=301,L]
</VirtualHost>

但是,如果不使用 SNI,每个 IP 就不能拥有超过 1 个 SSL 站点。例如,http://www.tutorialspoint.com/articles/how-to-set-up-multiple-ssl-host-with-a-single-apache-server

相关内容