使用htaccess强制SSL和WWW

问题描述:

我试图通过https运行我的整个站点并强制www。使用htaccess强制SSL和WWW

我见过一些解决方案,它们提供强制的www或https,甚至有几个组合,但我似乎无法得到任何工作。我通常会发现自己处于重定向循环中。

我得到的最接近是下面的,但它不够紧密尚未:

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

我需要https://www.example.com/

http://example.com SUCCESS
https://example.com SUCCESS
http://www.example.com FAIL
https://www.example.com SUCCESS,虽然没有实际重定向。

感谢

更新
下面的代码成功执行我需要重定向:

RewriteCond %{ENV:HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

RewriteCond %{ENV:HTTPS} on [NC] 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 
+0

如果你已经找到了一个解决方案,您的更新建议,请自行张贴作为一个答案,并接受它。有助于保持网站的问答性质。 – bPratik 2012-08-03 18:43:44

强制HTTPS和www被做其他提供的答案的组合。

这似乎工作:

RewriteCond %{ENV:HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

RewriteCond %{ENV:HTTPS} on [NC] 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

尝试添加[OR]标志的条件。你真的想要么没有WWW 过https:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 
+0

这确实有效,但我看到了重定向循环消息 - 不是网站,所以得到的URL是我想要的。 – 2012-08-01 22:13:59

+0

@JasonVarga不知道为什么这会导致重定向循环,当原始规则没有 – 2012-08-01 23:53:35

试试这个情况相反,它应强制该网站为您网域的SSL

RewriteCond %{ENV:HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 
+0

这迫使SSL,但不强制WWW。我已经将您的规则与另一个规则结合使用,以成功重定向我想要的方式。谢谢。 – 2012-08-03 18:35:00