【问题标题】:Force https on Heroku AND match domain breaks local WAMP environment在 Heroku 和匹配域上强制 https 破坏本地 WAMP 环境
【发布时间】: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 指令,这就是我在这里发布的原因。

标签: php .htaccess heroku


【解决方案1】:
RewriteCond %{HTTP_HOST} ^herokuapp$

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

因此,您的规则仅适用于HTTP_HOST 完全 herokuapp。 my-site.herokuapp.com 永远不会匹配此规则。

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

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

【讨论】:

  • @garek007 不客气。很高兴能帮到你!
猜你喜欢
  • 2019-03-17
  • 2014-08-29
  • 2015-10-12
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
相关资源
最近更新 更多