我似乎找不到答案。我进行了彻底的搜索。我已经在本地设置了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
答案 0 :(得分:0)
RewriteCond %{HTTP_HOST} ^herokuapp$
在a regex中,^
表示“字符串的开头”,而$
表示“字符串的结尾”。
因此,您的规则仅在HTTP_HOST
完全 herokuapp
时适用。 my-site.herokuapp.com
永远不会符合此规则。
RewriteCond %{HTTP_HOST} \.herokuapp\.com$
将规则应用于以.herokuapp.com
结尾的主机名。