在Heroku上强制执行https,并且match域破坏了本地WAMP环境

时间:2019-05-21 17:54:28

标签: php .htaccess heroku

我似乎找不到答案。我进行了彻底的搜索。我已经在本地设置了WAMP并要访问它,因此输入URL如下:

my-site/

然后,当我将文件推送到Heroku时,我会像访问该网站一样:

my-site.herokuapp.com

我需要强制页面在Heroku中的https上加载。 htaccess可以在Heroku上正常工作,但会破坏我的本地WAMP环境。

我一直在尝试设置两个重写条件并将它们链接在一起,以便htaccess仅适用于Heroku,而在本地被忽略。这是我的htaccess的样子:

RewriteEngine On

##Force SSL 
#only if herokuappis found in the url
RewriteCond %{HTTP_HOST} ^herokuapp$

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

我从这里借来的代码。 How to redirect to HTTPS with .htaccess on Heroku Cedar stack

,并且一直在尝试对其进行修改以使其对我有用,但无济于事。

我什至尝试了其他变体来检测URL中的heroku,例如:

RewriteCond %{QUERY_STRING} heroku

RewriteCond %{REQUEST_URI} heroku

但是我可能会误解它们的用法。我只是想匹配两个条件,但老实说,如果我可以用一个条件也可以。如果我可以随时在URL中包含heroku的情况下简单地强制HTTPS,那也可以。

谢谢。

编辑:当我在本地加载网站

This site can’t be reached my-site refused to connect.
Try:Checking the connection
Checking the proxy and the firewall
ERR_CONNECTION_REFUSED

1 个答案:

答案 0 :(得分:0)

RewriteCond %{HTTP_HOST} ^herokuapp$

a regex中,^表示“字符串的开头”,而$表示“字符串的结尾”。

因此,您的规则仅在HTTP_HOST完全 herokuapp时适用。 my-site.herokuapp.com永远不会符合此规则。

RewriteCond %{HTTP_HOST} \.herokuapp\.com$

将规则应用于以.herokuapp.com结尾的主机名。