我在2个不同的服务器上托管了100多个网站。我的一些客户最近注意到,当他们转到https://theirwebsite.com时,如果他们的网站上没有SSL,它会重定向到apache conf文件中的第一个SSL网站。我做了一些阅读,发现SSL网站需要自己的IP地址,所以我切换了我的SSL网站的IP地址。但是,我注意到问题仍在发生。有可能在httpd.conf中仍然需要删除或更改SSL网站,但有没有办法阻止这种情况发生?如果使用https,我是否可以找到一种方法来使没有https的网站重定向为空?
答案 0 :(得分:4)
它重定向到apache conf文件中的第一个SSL网站。
这是因为您有两组用于apache的虚拟主机:1个侦听端口80(非SSL),另一个侦听端口443(SSL)。任何非SSL请求都会发送到侦听端口80的vhost,并且任何SSL请求都会发送到侦听端口443的chost。当请求未在任何vhost中定义的主机时,它默认为“默认”vhost,它成为第一个被定义的vhost(例如,你的vhost文件中出现的第一个)。
为了防止这种情况,您可以为每个非SSL网站定义一个SSL vhost,也可以在SSL文件中创建一个新的“默认”虚拟主机,除了重定向到非SSL之外什么都不做:
RewriteEngine On
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R]