如何为当前的特定域强制使用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]
但它给了我一个无限循环。
答案 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]