6

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

3 回答 3

6

强制 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]
于 2012-08-03T19:15:01.060 回答
1

试试这个条件,它应该强制网站进入你的域的 ssl

RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
于 2012-08-03T12:02:38.283 回答
0

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

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
于 2012-08-01T20:32:19.190 回答