我最近遇到了一个类似的问题,所以我将为搜索此问题的人提供一些额外的信息。
当您尝试为站点管理员强制SSL时,应采取的第一步是the directions in the codex . 这意味着定义FORCE_SSL_ADMIN
wp配置中的选项。php文件一定要注意the warning in the codex 此编辑需要高于/* That\'s all, stop editing! Happy blogging. */
线路有很多可能的原因可以解释为什么这会给你一个重定向循环,但它们都可以归结为Wordpressis_ssl()
函数正在返回false
. 例如,您可能正在执行SSL卸载的反向代理后面运行。如果是这样,那么您的用户输入https://yourwordpresssite
, 但是SSL卸载程序处理解密,当您的服务器收到请求时,请求不再是SSL,您的服务器会看到http://yourwordpresssite
. 如果您被困在这里,假设您的反向代理配置正确,那么codex也有很好的建议。请参见此处的说明:(http://codex.wordpress.org/Administration_Over_SSL#Using_a_Reverse_Proxy).如果仍然不起作用,则您的反向代理可能没有设置HTTP_X_FORWARDED_PROTO
标题。不幸的是,这些东西都不是标准化的,并且有多种方法表明SSL卸载已经发生。我们的负载平衡器(Citrix Netscaler)使用的方法是使用Microsoft创建的标题Front-End-Https
. 您可以在此处将此标题视为wikipedia上列出的常见非标准响应标题之一:(http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Common_non-标准\\u响应\\u标题)。请注意,当服务器看到此标头时,它将如下所示HTTP_FRONT_END_HTTPS
. 还请注意,Netscaler默认情况下不发送此标头——您必须将其配置为添加标头。这是有记录的here, 还有一个很好的视频演示here.
最后,因为我们的整个网站都只使用HTTPS,所以我选择使用wordpress HTTPS插件,它可以很好地处理边缘情况(就像其他wordpress插件一样,它具有硬编码的http://URL,会在您的安全页面上发出警告)。我修补了插件以识别HTTP_FRONT_END_HTTPS
我正在向作者提交一个补丁,所以在某种程度上,这个插件应该支持这个补丁。
祝你好运