.htaccess 文件不重定向 http://www。到 https://www

fro*_*uke 5 apache url .htaccess https web

我制作了一个 .htaccess 文件来将所有网站流量重定向到https://www..

这是我完整的 .htaccess 文件:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

以下重定向完全按预期工作:

http://example.com -> https://www.example.com
https://example.com -> https://www.example.com
https://www.example.com -> https://www.example.com
Run Code Online (Sandbox Code Playgroud)

除了:

http://www.example.com -> http://www.example.com
Run Code Online (Sandbox Code Playgroud)

如上所示,如果你去http://www.它不会重定向到 HTTPS 版本。

谁能帮我理解为什么其他重定向工作正常,但那个不是?

附加说明:我查看了 StackOverflow 上的许多帖子,但他们的大多数解决方案都以重定向循环错误告终。

fro*_*uke 3

在联系 123-Reg(我的托管提供商)后,他们提交了这个解决方案,效果非常好:

RewriteEngine on

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

RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Run Code Online (Sandbox Code Playgroud)

基本上,他们将脚本设置为执行两项任务:将域更改为WWW,如果尚未更改,则更改为HTTPS。此外,他们使用了ENV:HTTPS,这与他们的文档 ( ) 中找到的内容不同ENV:SSL

很高兴能够对此进行排序,也许这会对使用 123-Reg Hosting 的其他人有所帮助。