我正在尝试通过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]
答案 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]