我疯狂地搜索了一下这个问题的答案......所以这就是场景:
我有一台托管多个域的服务器。但是,主域应该是唯一一个加载为HTTPS的域。
每当我尝试以下代码时:
RewriteEngine On
RewriteCond%{SERVER_PORT} 80
RewriteRule ^(。*)$ https://www.MAINDOMAIN.com/ $ 1 [R,L]
其他域名从http://www.site.com 更改为 HTTP(S)://www.MAINDOMAIN.com/FolderName,依此类推。
我该如何解决这个问题?
答案 0 :(得分:0)
最直接的方法是在端口443上只有一个虚拟主机www.maindomain.com,并且只有www.maindomain.com:80重定向到https。
<VirtualHost *:80>
ServerName www.maindomain.com
Redirect / https://www.maindomain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.maindomain.com
SSLEngine on
...
</VirtualHost>
<VirtualHost *:80>
ServerName www.site.com
...
</VirtualHost>
不需要RewriteRule。如果需要,您也可以在其他站点上将HTTPS重定向到HTTP:
<VirtualHost *:443>
ServerName www.site.com
SSLEngine on
Redirect / http://www.site.com/
</Virtualhost>
否则https://www.site.com
将由https://www.maindomain.com
提供服务,因为这将是HTTPS唯一可用的虚拟主机。这将使其成为HTTPS的默认虚拟主机,因此它将为所有HTTPS请求提供服务。