htaccess强制特定域名使用SSL

8
我该如何强制特定域名使用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个回答

17
这应该可以运行:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} exampledomain\.org$ [NC]
RewriteRule ^ https://www.examplemydomain.org%{REQUEST_URI}  [R=301,L,NE]

2
插入符号和目标地址之间的空格非常重要;-) 我通过试错学到了一些东西。 - Fred Gandt
@anubhava,子域名怎么样?例如:sub.exampledomain.com - Morteza Rajabi
1
@MortezaRajabi: 然后你可以使用:RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] - anubhava
@anubhava,我需要它针对特定的域名。我的网站有其他域名,但我只需要强制特定子域名使用SSL。 - Morteza Rajabi
1
在这个 RewriteRule 之前,您仍需要 RewriteCond %{HTTP_HOST} =sub.exampledomain.org 条件。 - anubhava

2

看起来你在做两件不同的事情。一是在缺少www时添加它,二是在未使用SSL时强制使用它。因此有两种不同的情况,任何一种情况都应该强制重定向。这意味着你需要使用[OR]标志,但如果请求已经使用了SSL,则你之前的用法会出错。尝试使用以下代码:

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

0

尝试:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接