首页 > 解决方案 > 重定向加载 http 而不是 https

问题描述

我希望我的网站始终以 https 加载,我认为我已经设置了,但显然,有时在重定向期间我的网站仍然加载 http。

我目前有以下代码:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,NE,L]

我的主机提供商向我发送了一个链接,其中显示了以下代码:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

我的问题是,我应该采用他们的方法还是可以在我的 htaccess 代码中添加一些东西,以便所有重定向都加载为 https。

编辑:有谁知道这段代码实际上是做什么的?

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'

标签: apache.htaccesssslhttpsserver

解决方案


这个CF-Visitor

此标头是一个 JSON 对象,仅包含一个名为“scheme”的键。含义与上述 X-Forwarded-Proto 的含义相同 - 例如,它将是 HTTP 或 HTTPS,并且仅当您需要在 Cloudflare 设置中启用灵活 SSL 时才相关。

https://support.cloudflare.com/hc/en-us/articles/200170986-How-does-Cloudflare-handle-HTTP-Request-headers-CF-Visitor

因此,要检查最好检查 htpps同一服务器上的天气设置或使用这样的 cloudfare:

RewriteEngine On
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

注意:清除浏览器缓存测试


推荐阅读