wpCAS插件似乎正在运行:我在包含 WordPress 安装的网站上有一个子域(即{{1}我正在使用 WordPress GitHub Repo 以及 Capistrano 进行实际部署。这很重要,因为由于此设置,内容位于子目录中,即test.mywebsite.com
。结果是,为了访问网站的管理部分,我必须在浏览器中输入test.mywebsite.com/wp
。但是,访问前端网站只需要输入test.mywebsite.com/wp/wp-admin
。足够困惑?
我正在使用 localhost MAMP服务器测试所有这些。我还通过我的Mac test.website.com
文件将test.mywebsite.com
的IP重定向到我的本地方框,这也是值得的,所以一切都在本地方框上正确发生。
现在,问题在于:我正在使用带有 RubyCAS服务器的wpCAS插件。一切正常,直到实际的登录过程。
wpCAS旨在简单地将登录页面重定向到我的CAS登录,然后将输入CAS口中的凭据与WordPress数据库中的凭据相匹配。如果匹配,它(理论上)将带我到管理页面,我的凭据登录并正常工作。
由于此设置,我输入hosts
会将我带到localhost/wp/wp-admin
,即我可以输入凭据的CAS界面。
但是,一旦我将我的凭据放入CAS界面,我就会使用重定向循环进行搜索,如下所示:
auth.mywebsite.com
和
wp-login.php?redirect_to=http%3A%2F%2Flocalhost%2Fwp%2Fwp-admin%2F&reauth=1
所以我们四处走走!
知道为什么会这样,以及如何解决问题?
答案 0 :(得分:1)
我明白了!在wpcas.php
插件文件夹内的wpCAS
文件中,第85-123行详细说明了 wpCAS 的实际登录功能。 第104行& 108 详细介绍了wpCAS如何将您重定向到管理页面:
<强> 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(非常感谢Luigi Balzano先生),我找到了解决方案。将这两行上的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及更低版本一起使用。
希望这可以帮助你wpCAS流浪汉!