使用htaccess强制SSL和WWW

时间:2012-08-01 20:22:32

标签: .htaccess redirect ssl

我正在尝试通过https运行我的整个网站并强制使用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]

3 个答案:

答案 0 :(得分:5)

强制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]

答案 1 :(得分:1)

请尝试此条件,它应该强制网站为您的域的ssl

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

答案 2 :(得分:0)

尝试在条件中添加[OR]标记。你真的想要 没有www 没有https:

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