【发布时间】:2019-10-08 04:21:52
【问题描述】:
我似乎无法找到答案。我已经进行了彻底的搜索。我在本地设置了 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
【问题讨论】:
-
^表示字符串的开头,$表示字符串的结尾。my-site.herokuapp.com永远不会匹配^herokuapp$。 -
另外,“如果以上条件都不满足,则重定向到 https”是不准确的。如果满足两个条件,它就会重定向,而不是两者。
-
另外:
heroku不在QUERY_STRING中,也不在REQUEST_URI中。看起来你正在四处尝试随机的事情,而不是理解你在做什么。我已经指出了您方法中的一些问题,但是如何.htaccess会破坏您的本地?会发生什么,您会遇到什么错误? -
@ceejayoz 已编辑帖子
-
@ceejayoz 是的,我正在四处乱窜。我不知道如何阅读 htaccess 指令,这就是我在这里发布的原因。