【发布时间】:2016-04-20 10:51:53
【问题描述】:
TL;DR:我想在除管理员/登录之外的所有页面上将https 重定向到http,我希望发生完全相反的情况。我还希望将www 重定向到裸域名。 (更新:请查看更新 3 以获得答案)
从标题中可能很清楚,我在 OpenShift 上免费托管了一个 Wordpress 博客。我有一个从 GoDaddy 购买的自定义域。我正在使用 cloudflare,所以我可以使用免费的 SSL。
这是我的配置:
CloudFlare DNS:
CloudFlare 页面规则:
这是最有效的。我其实很想有这个规则:
*ghostlessmachine.com/* -> https://ghostlessmachine.com/$1
但我遇到了更多类似的问题,尽管根据this CloudFlare article,这似乎是我应该做的。实际上,最初我只想在管理页面中强制使用 SSL,但我什至不知道如何尝试。我想过使用两个页面规则,如下所示:
*ghostlessmachine.com/* -> http://ghostlessmachine.com/$2
*ghostlessmachine.com/wp-* -> http://ghostlessmachine.com/$2
但我没有运气。
这是我的 OpenShift 配置:
当我在地址栏中输入ghostlessmachine.com 时,它会正确地将我带到https:...。但是,我分享了一个链接 (https://ghost...),并且有人报告说无法访问它。我无法在本地复制。
当我尝试www.ghost... 时,我得到:
This webpage has a redirect loop
ERR_TOO_MANY_REDIRECTS
有人知道我做错了什么吗?我已经忘记尝试了多少种不同的配置,但似乎没有任何效果。
谢谢!
更新
好的,所以按照评论中的建议,我设法让情况好转了一些。对我来说,我最初链接到的文章没有完成工作,而另一个 SO 问题却完成了,这对我来说仍然是反直觉的。所以这就是我所做的改变:
- 从 OpenShift 中删除了
www.ghost...别名。 - 将 CloudFlare 的 CNAME 记录从
www -> blabla.rhcloud.com更改为www -> ghostlessmachine.com - 创建此页面规则:
www.ghostlessmachine.com/* -> http://ghostlessmachine.com/$1
现在ghost... 和www.ghost... 都可以工作,并带我去http://ghost...。但是,如果我输入https://ghost...,它也可以工作,而无需将我重定向到简单的http。这是个问题。
我尝试改用此页面规则:
ghostlessmachine.com/ -> http://ghostlessmachine.com/$2
所以我得到了https://、http://www、www,所有内容都重定向到了http://ghost...,但它不起作用。我无法再访问我的博客,无论我尝试什么地址,我都会得到 ERR_TOO_MANY_REDIRECTS。
更新 2
这是我在所有建议之后的完整设置:
htaccess:
wp-config.php:
CloufFlare:
结果:
-
https -> http在非管理员/登录页面上:工作 ✓ - 尝试访问管理/登录页面:ERR_TOO_MANY_REDIRECTS
更新 3
这成功了:
我仍然不明白为什么这行得通,而其余的却行不通。这基本上是一系列相当盲目的试验和错误,这里有 Allen 和 Simon in the CloudFlare support page 的一些输入。无论如何,现在我的所有要求都得到了尊重,谢谢!
【问题讨论】:
-
我会以
ghostlessmachine.com CNAME wordpress-ghostlessmachine.rhcloud.com和www.ghostlessmachine.com CNAME ghostlessmachine.com的方式配置 DNS 以防止重定向循环,如 answered here。 -
我按照您链接到的说明进行操作:更改了第二条 CNAME 记录 + 使用
www删除了 OpenShift 别名。我没有创建任何页面规则。我希望这会使 ERR_TOO_MANY_REDIRECTS 消失,但要在 URL 中保留www,或者获取 ERR_NAME_NOT_RESOLVED。相反,我不断收到 ERR_TOO_MANY_REDIRECTS。你明白为什么吗?我不知道。 -
我添加了这个页面规则:
www.ghostlessmachine.com/* -> http://ghostlessmachine.com/$1。我输入了地址并被重定向到https://www.ghostlessmachine.com/app。我不知道https和/app来自哪里!我仍然得到 ERR_TOO_MANY_REDIRECTS。 -
糟糕,误报!我想我在测试之前没有等待足够的时间。它现在似乎正在工作!我现在只需让
https仅适用于管理页面。
标签: wordpress ssl dns openshift cloudflare