使用 .htaccess 将 http 流量重定向到 https

Redirect http traffic to https using .htaccess

我正在尝试将所有 http 流量重定向到 https。我没有在我的服务器上安装 SSL 证书,并且正在使用 cloudflare 灵活的 SSL 选项。

以下代码工作文件

  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www\.(.*)
  RewriteRule ^.*$ https://%1/ [R=301,L]

但这会重定向 http://www.example.com to https://example.com

但是当我添加这个时

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

重定向所有非 www 网址,例如 http://example.com to https://example.com

网站无法加载,并在浏览器上显示 重定向过多 错误。我该如何解决这个问题并将我所有的 http 流量重定向到 https://?

谢谢

如果您的服务器上没有 SSL 证书,您必须将 CloudFlare SSL 设置为 "flexible"。

根据他们的 blog post,您可以在 .htaccess 中设置以下内容:

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://www.domain.com/ [L]

您当前的设置会检查请求是否通过 https 到达您的 服务器,但由于您没有证书,所以无法正常工作。 CloudFlare 将所有 https 请求转发到 http,然后您的服务器重定向到 https,依此类推。