重定向以http而不是https加载

时间:2019-03-13 19:27:34

标签: apache .htaccess ssl https server

我希望我的网站始终加载我认为已设置的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"'

1 个答案:

答案 0 :(得分:0)

CF-Visitor

  

此标头是JSON对象,仅包含一个称为“方案”的密钥。含义与上面的X-Forwarded-Proto相同-例如它可以是HTTP或HTTPS,并且仅在需要在Cloudflare设置中启用“ Flexible SSL”时才有意义。

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

因此,要进行检查最好检查同一服务器上的天气htpps的设置或类似的云票价:

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

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