TL; DR :我想在除admin / login之外的所有页面上将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问题确实没有完成任务时仍然是反直觉的。所以这就是我改变了:
www.ghost...
别名。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
:工作✓这就是诀窍:
我仍然不明白为什么会这样,其余的却不行。这基本上是一系列相当盲目的试验和错误,来自Allen和Simon in the CloudFlare support page的一些意见。无论如何,我的所有要求现在都得到尊重,谢谢!
答案 0 :(得分:0)
确保在你的wp-config.php文件中有以下内容:
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
请查看此处:Force non-WWW but force https across all of wordpress & the entire domain
将其他所有内容重定向到非https,您可以在wordpress重写之前将以下内容添加到根.htaccess文件中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^/wp-admin.*
RewriteCond %{REQUEST_URI} !^/wp-login.*
RewriteCond %{HTTP_REFERER} !^https://.*
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<强>更新强>: CloudFlare的页面规则具有以下&#34;页面规则优先级由它们在列表中的位置决定。如果多个规则与URL匹配,则顶部的规则具有更高的优先级。 &#34;
让我们看看之前发生的事情:
这是循环的来源