Mod rewrite Heroku(PlayFramework/Scala)应用程序自动重定向到https

Mod rewrite Heroku(PlayFramework/Scala)应用程序自动重定向到https,mod-rewrite,heroku,https,playframework,Mod Rewrite,Heroku,Https,Playframework,我有一个PlayFramework应用程序,它是在Heroku上使用Scala开发的;我之所以提到开发语言和框架,是因为我发现的任何关于这个问题的帖子都与PHP有关!我在自定义域上运行http和https,但我想强制将http请求重定向到https 我发现需要使用以下内容更新.htaccess文件: ##Force SSL #Normal way (in case you need to deploy to NON-heroku) RewriteCond %{HTTPS} !=on #He

我有一个PlayFramework应用程序,它是在Heroku上使用Scala开发的;我之所以提到开发语言和框架,是因为我发现的任何关于这个问题的帖子都与PHP有关!我在自定义域上运行http和https,但我想强制将http请求重定向到https

我发现需要使用以下内容更新.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]
但是我不确定是否有可能或者如何使用Play和Scala设置.htaccess文件


有人能给我建议吗?谢谢。

您只需添加

play.filters.enabled += play.filters.https.RedirectHttpsFilter
.conf
文件中

它会自动将所有HTTP请求重定向到HTTPS

默认情况下,它仅在
生产
模式下工作。要更改此设置,请添加:

play.filters.https.redirectEnabled = true

有关更多信息,请参阅文档。

这并不像预期的那样有效。我在Heroku上使用一个部署管道,推送到上游主推送到暂存(只有普通的herokuapp.com域指向已经是https的域)。然后,在测试了STAGING之后,我从STAGING转移到PROD。上面的过滤器给了我一个错误
。herokuapp.com在尝试点击登台url时重定向了您太多次
。从登台移动到产品只是简单地复制部署的工件,我不能在每个环境中使用不同的.conf文件,这将解决该问题。您可以使用不同的
.conf
文件。在下面创建文件名
Procfile
。然后在其中设置
-Dconfig.resource=yourFile.conf
。它将使Heroku使用该
.conf
文件。Procfile内置于部署的工件中。当使用部署管道时,部署的工件只需从STAGING复制到PROD(无更改,即相同的Procfile)。所以我不能有不同的Procfiles。您可以使用环境变量来保存conf文件的名称。像
-Dconfig.resource=$CONFIG\u FILE
然后在每个环境中设置
heroku-CONFIG:set-CONFIG\u FILE=“yourFile.conf”
。或者您可以将env变量放在配置中:
play.filters.https.redirectEnabled=${REDIRECT\u ENABLED}