gpt4 book ai didi

.htaccess - 如何在 Heroku Cedar 堆栈上使用 .htaccess 重定向到 HTTPS

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:40 25 4
gpt4 key购买 nike

我是云托管的新手...

我正在开发一个 PHP 网络应用程序,该应用程序作为“Cedar”应用程序托管在 Heroku 上。 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?

最佳答案

在为此花了一整天之后,我想通了!!

本书 Professional Heroku Programming 对这个问题进行了 Eloquent 总结.

底线:Heroku 设置自己的自定义 header 以指示流量的原始方案(在 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 行。

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

关于.htaccess - 如何在 Heroku Cedar 堆栈上使用 .htaccess 重定向到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com