在Heroku Laravel实例上设置HTTPS重定向

4
我有一个运行在Heroku的Apache实例上的Laravel 5构建,并且我正在尝试确保所有流量都通过https进行转换,但我已经彻底迷失了方向。
我已经成功安装和运行了SSL证书。然而在Heroku上,您无法直接编辑其服务器上的.htaccess文件。因此,他们在此页面上的建议是设置apache_app.conf并告诉Heroku通过在Procfile中放置以下内容来读取它:
web: vendor/bin/heroku-php-apache2 -C apache_app.conf public/

然而,当我这样做时,添加任何类型的HTTPS重写规则都会导致重定向循环或应用程序错误。以下是我的当前配置:
RewriteEngine on

#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]

你能把你的 apache_app.conf 文件内容添加到你的问题中吗? - elithrar
3
@elithrar 确定,已更新。我应该指出,最终我通过在 apache_conf.php 文件顶部添加 "DirectoryIndex index.php index.html index.htm" 来解决了这个问题。我想那就是问题所在。虽然我承认对这些东西有点不熟悉。 - John
1
你应该回答自己的问题,然后将其标记为答案。这正好解决了我的问题。谢谢。 - Anthony
将该代码添加到public/.htaccess文件中,并从Procfile中删除“-C apache_app.conf”,也可以解决问题。 - badcom
2个回答

1

1

我不是通过 .htaccess 处理重定向,而是使用 this 方法进行处理。

HttpsProtocol 中间件将重定向所有 Web 路由到 HTTPS 协议。


我的api.php和web.php中定义的路由在Heruko上无法工作。 - user123456
1
为什么我的Heroku实例上return redirect()->secure()无法正常工作?有任何想法吗? - SMPLYJR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接