我在一台机器上托管了两个网站: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>
眼下
- https://foo.com作品
- http://foo.com重定向至https://blank.test
- http://blank.site遇到权限错误,但这可能无关紧要
- http://blank.site重定向至https://blank.test
为什么是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