强制用户在主域和子域上使用SSL。 WHMCS

时间:2012-04-13 01:45:17

标签: apache .htaccess whmcs

我有两个拥有SSL证书的主要链接,
www.example.com
billing.example.com
我想强迫用户在他们两个上使用SSL,
https://www.example.com
https://billing.example.com

我正在使用WHMCS,当我将其放入设置中以使用billing.example.com时,它就像在www.example.com上一样

我用.htaccess尝试了一些不同的东西,但都没有用。

3 个答案:

答案 0 :(得分:1)

如果您不想使用.htaccess,也可以使用apache的httpd.conf中的虚拟主机来完成。 (以下假设您在端口80上运行http,在443上运行https)

<VirtualHost *:80>
 RewriteEngine on
 RewriteCond %{SERVER_PORT} !^443$
 RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
<VirtualHost *:443>
 ... some config
</VirtualHost>

答案 1 :(得分:1)

命名虚拟主机不适用于HTTPS,因为服务器在建立连接之前无法解释主机标头,并且建立连接需要完成HTTPS使用的SSL加密握手; SSL证书(没有扩展名)只能有一个服务器主机名作为主题,因此证书和连接仅适用于单个主机名。因此,命名的虚拟主机机制永远不会有机会对传入连接进行操作,而托管多个站点的唯一剩余方法是向主机添加多个IP地址并使用基于IP的虚拟服务器。

使用HTTPS和基于名称的虚拟主机支持多个站点的关键是使用通配符名称(在RFC2818中指定)或x509版本3证书(在RFC3280中指定)主题备用名称扩展名。

作为替代方案,您可以将您的网站绑定(www。和计费到同一主机上的不同IP地址)。

答案 2 :(得分:1)

您可以将以下指令添加到Apache Virtual Host Configuration。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

这将始终重定向到HTTPS主机。