htaccess强制ssl为特定域

时间:2013-10-17 20:39:35

标签: .htaccess ssl https

如何为当前的特定域强制使用SSL

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

这是有效的,但是我在托管上添加了几个域,当我尝试访问其他附加域时,附加域也被迫使用SSL。

我试过了:

RewriteCond %{HTTP_HOST} ^exampledomain\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.exampledomain\.org$
RewriteRule ^/?$ "https\:\/\/www\.examplemydomain\.org\/" [R=301,L]

但它给了我一个无限循环。

3 个答案:

答案 0 :(得分:17)

这应该有效:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} exampledomain\.org$ [NC]
RewriteRule ^ https://www.examplemydomain.org%{REQUEST_URI}  [R=301,L,NE]

答案 1 :(得分:2)

看起来你在这里做了两件不同的事情。如果缺少某个www,则会添加[OR],并且在未使用时强制使用SSL。所以有两个不同的条件,其中一个是真的应该强制重定向。这意味着您要使用RewriteCond %{HTTP_HOST} ^exampledomain\.org$ [OR] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.examplemydomain.org/$1 [R=301,L] 标志,但如果请求已经是SSL ,则您使用它的方式会中断。尝试:

{{1}}

答案 2 :(得分:0)

尝试:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.){0,1}exampledomain\.org$
RewriteRule ^/?$ "https\:\/\/www\.examplemydomain\.org\/" [R=301,L]