【问题标题】:Force SSL and WWW together using htaccess使用 htaccess 强制 SSL 和 WWW 一起使用
【发布时间】:2012-07-30 19:21:22
【问题描述】:

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

【问题讨论】:

  • 如果您找到了更新建议的解决方案,请将其作为答案自己发布并接受。有助于保持网站的问答性质。

标签: .htaccess redirect ssl


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这会强制使用 SSL,但不会强制使用 www。我已将您的规则与另一个规则结合使用,以成功重定向我想要的方式。谢谢。
    【解决方案3】:

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

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

    【讨论】:

    • 这确实有效,生成的 URL 是我想要的,虽然我看到了重定向循环消息 - 而不是站点。
    • @JasonVarga 不确定为什么在原始规则没有的情况下会导致重定向循环
    猜你喜欢
    • 2023-03-27
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多