【问题标题】:How to redirect to HTTPS with .htaccess on Heroku Cedar stack如何在 Heroku Cedar 堆栈上使用 .htaccess 重定向到 HTTPS
【发布时间】:2014-12-16 20:15:55
【问题描述】:

我是云托管新手...

我正在开发一个作为“Cedar”应用程序托管在 Heroku 上的 PHP Web 应用程序。 Heroku 为其所有子域提供“搭载”SSL,因此我可以很好地加载https://myapp.herokuapp.com。但我也可以加载http://myapp.herokuapp.com。我想通过将 http 请求重定向到 https 来强制 SSL。

通常,这很容易。我会按如下方式使用 mod_rewrite:

RewriteCond %{HTTPS} != on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

但这在 HEROKU 上不起作用!

似乎 SSL 在流量到达我的应用程序之前终止了上游。所以%{HTTPS} 条件永远不会满足,结果是一个重定向循环。我也尝试了以下方法,但也没有用:

RewriteCond %{SERVER_PORT} != 443 #<--also redirect loop
RewriteCond %{REQUEST_SCHEME} !https #<--also redirect loop

所以我的问题是如何在上游终止 HTTPS 时检测/重定向到 HTTPS?

【问题讨论】:

    标签: .htaccess mod-rewrite ssl heroku load-balancing


    【解决方案1】:

    花了一整天的时间,我想通了!!

    这个问题被雄辩地总结了here

    底线:Heroku 设置自己的自定义标头以指示流量的原始方案(在 SSL 在负载平衡器处终止之前)。

    所以这在 Heroku 上的 .htaccess 文件中有效

    ##Force SSL 
    
    #Normal way (in case you need to deploy to NON-heroku)
    RewriteCond %{HTTPS} !=on
    
    #Heroku way
    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    
    #If neither above conditions are met, redirect to https
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

    秘诀就是HTTP:X-Forwarded-Proto一行。

    希望这可以帮助遇到同样问题的其他人!在撰写本文时,关于此的文档为零。

    【讨论】:

    • 我希望我昨天能找到这个:(
    • 这对我们帮助很大。谢谢SDP
    • 在过去的三个小时里,我一直把头撞在墙上,试图弄清楚这一点。这解决了它。谢谢!
    • 谢谢!像魅力一样工作。
    • 记得在开头加上“RewriteEngine On”
    【解决方案2】:

    我在上面给出的最佳答案中添加了一行,因此它不会破坏我没有配置 SSL 的本地开发环境:

    # If header is present in the request
    RewriteCond %{HTTP:X-Forwarded-Proto} .
    

    (注意 RewriteRule 仅在 all preceeding RewriteCond 持有时应用)。

    【讨论】:

      【解决方案3】:

      如果 heroku 没有获取您的 .htaccess 文件,您可能必须使用 heroku 记录的自定义应用程序级别 Apache 配置

      基本上,您需要将其添加到您的个人资料中: web: vendor/bin/heroku-php-apache2 -C apache_app.conf

      【讨论】:

        猜你喜欢
        • 2011-12-08
        • 2012-04-02
        • 2012-08-07
        • 2012-07-10
        • 2012-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        相关资源
        最近更新 更多