【发布时间】: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