【问题标题】:.htaccess How to Exclude One Site From SSL?.htaccess 如何从 SSL 中排除一个站点?
【发布时间】:2014-09-17 02:31:45
【问题描述】:
我试图排除一个网站使用 SSL,但我似乎无法正确获取指令。我希望我的所有附加域都使用 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}
【问题讨论】:
标签:
.htaccess
mod-rewrite
ssl
【解决方案1】:
您尝试执行的操作将行不通。 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]