.htaccess如何从SSL中排除一个站点?

时间:2014-09-10 17:29:10

标签: .htaccess mod-rewrite ssl

我正在尝试将一个网站排除在使用SSL之外,但我似乎无法正确使用该指令。我希望我的所有AddOn域都使用SSL,除了example.com。 (因为StartSSL很难相处)

# Enable https
RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{HTTP_HOST}:443%{REQUEST_URI}
RewriteRule !^example.com(/|$) https://%{HTTP_HOST}:443%{REQUEST_URI}

1 个答案:

答案 0 :(得分:0)

您尝试做的事情无效。在将任何请求数据发送到服务器之前,初始化SSL握手,因此,无论您做什么,如果有人前往https://example.com,您将获得证书异常。

如果证明例外不是您的问题,那么您需要与%{HTTP_HOST}变量匹配:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

然后如果你需要:

RewriteCond %{HTTPS} on
RewriteCond ^{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]