这个wpCAS plugin 似乎正在工作:我有一个subdomain 在包含WordPress 安装(即。test.mywebsite.com
), 我正在通过一个WordPress GitHub Repo 随着Capistrano 用于实际部署。这很重要,因为由于这种设置,内容位于子目录中,即。test.mywebsite.com/wp
. 结果是,为了访问站点的管理部分,我必须输入test.mywebsite.com/wp/wp-admin
在我的浏览器中。然而,访问前端网站只需要我输入test.website.com
. 够让人困惑吗?
我正在用一个localhost MAMP server. 我还重定向了test.mywebsite.com
通过我的Mac电脑发送到我的本地邮箱hosts
文件,因此所有内容都正确地发生在本地框上。
现在,这里有一个陷阱:我正在使用带有RubyCAS server. 在实际登录过程之前,一切正常。
WPCA旨在re-direct the login page to my CAS login, 然后match the credentials 与WordPress数据库中的内容一起输入CAS界面。如果有匹配,它(理论上)会将我带到管理页面,并且我的凭据已登录并正常工作。
由于此设置,我键入localhost/wp/wp-admin
带我去auth.mywebsite.com
, CAS接口,我可以在其中输入凭据。
然而,一旦我将凭据放入CAS接口,我就会被redirect loop 看起来像:
wp-login.php?redirect_to=http%3A%2F%2Flocalhost%2Fwp%2Fwp-admin%2F&reauth=1
和
wp-admin/
所以,我们到处走!
你知道为什么会发生这种情况,以及如何解决这个问题吗?
最合适的回答,由SO网友:Jordan Thornquest 整理而成
我明白了!在wpcas.php
文件内部的wpCAS
插件文件夹,第85-123行详细说明了wpCAS. Lines 104 &;108 有关WPCA如何将您重定向到管理页面的详细信息:
104:
wp_redirect( preg_match( \'/^http/\', $_GET[\'redirect_to\'] ) ? $_GET[\'redirect_to\'] : site_url( $_GET[\'redirect_to\'] ));
108:
wp_redirect( site_url( \'/wp-admin/\' ));
但是,这会导致(出于我未知的原因)的重定向循环
DOOM. 幸亏
this tip, 然而(非常感谢路易吉·巴尔扎诺先生),我找到了一个解决办法。更改
wp_redirect
这两行上的函数
wp_safe_redirect
, 像这样:
104:
wp_safe_redirect( preg_match( \'/^http/\', $_GET[\'redirect_to\'] ) ? $_GET[\'redirect_to\'] : site_url( $_GET[\'redirect_to\'] ));
108:
wp_safe_redirect( site_url( \'/wp-admin/\' ));
这把我从
DOOM.
尽管这个插件已经有两年的历史了,但它仍然可以很好地使用WordPress 版本3.5.1及以下。
希望这对你们这些流浪汉有所帮助!