我已经设置了一个负载均衡器,可以接受来自用户的https连接。然后使用http连接将计算引擎连接到负载均衡器。
我在根文件夹中写了以下.htaccess文件:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
现在问题是,计算引擎始终通过http链接(连接到负载均衡器)而不是https连接。
因此,即使URL以https开头,.htaccess文件也始终认为连接是http而不是https。因此,即使网址为https,它也会在无限循环中尝试将用户发送到https。
在这种情况下,应该如何将http重定向到https。
感谢。
答案 0 :(得分:7)
您应该检查X-Forwarded-Proto http标头。它由负载均衡器设置,其值为http或https。
答案 1 :(得分:2)
这需要很长时间才能找到答案!非常感谢@Lennert!
user@host-vm:/opt/bitnami/apps/wordpress/htdocs# head -4 /opt/bitnami/apps/wordpress/conf/htaccess.conf RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
答案 2 :(得分:0)
对于正在使用php
的用户,我一直在寻找一种使我的项目将任何页面重定向到Google Cloud中的https
的简单方法,并且找到了一个简单的解决方案。您所要做的就是将此代码添加到php
页的顶部。它必须位于标题中的代码的顶部,即 F̲i̲r̲s̲t̲L̲i̲n̲e of :
<?php
if ($_SERVER['HTTPS'] == 'off') {
header("Location: https://www.YOUR_SITE.com".$_SERVER['REQUEST_URI']);
die();
}
?>