在Google Cloud中将http重定向到https

时间:2016-07-05 11:10:59

标签: .htaccess google-compute-engine

我已经设置了一个负载均衡器,可以接受来自用户的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。

感谢。

3 个答案:

答案 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();
}
?>