首先,我的服务器位于负载均衡器后面。我的SSL证书位于负载平衡器上,并处理HTTPS。来自端口443的数据将使用端口80上的HTTP转发到Wordpress服务器。
但是,wordpress和php不知道我的服务器配置。这会使浏览器对我有效的SSL证书的有效性产生怀疑。
为了解决这个问题,我将以下代码添加到functions.php中。我在这里找到了此代码,而法典对此表示同意。
/**
* Make PHP HTTPS aware via HTTP_X_FORWARDED_PROTO
*/
if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS']='on';
}
这对于前端非常有用,但是现在即使使用我的管理员帐户也无法访问/ wp-admin /。登录后,我收到一条消息,“抱歉,不允许您访问此页面。” 没有提供其他帮助。
因此,我在wp-admin文件夹中进行了搜索,发现“抱歉,不允许您访问此页面”。出现17次不同的时间。
这些错误消息大多数与用户权限检查相关联。
如何使HTTPS保持打开状态并保留管理员访问权限?
摘要:
- 在将HTTP_X_FORWARDED_PROTO逻辑添加到functions.php之前,我可以访问wp-admin /
- 将HTTP_X_FORWARDED_PROTO逻辑添加到functions.php后,我无法访问wp-admin /
- 将HTTP_X_FORWARDED_PROTO逻辑删除到functions.php后,我无法访问wp-admin /
更新:
我发现错误消息来自wp-admin / menu.php,而这部分代码位于底部。我menu.php
在错误的末尾添加了内容,以找出它是该文件。
if ( !user_can_access_admin_page() ) {
/**
* Fires when access to an admin page is denied.
*
* @since 2.5.0
*/
do_action( 'admin_page_access_denied' );
wp_die( __( 'Sorry, you are not allowed to access this page. menu.php'), 403 );
}
我仍然不知道如何解决此问题。
我没有定义“ FORCE_SSL_ADMIN”。我会试试看。
—
nu珠穆朗玛峰
您需要检查是否也通过http从负载均衡器发送了https cookie。听起来好像没有发送。显然,还需要检查另一种方法,即您设置的cookie是否通过https传输
—
Mark Kaplun 2016年
define('FORCE_SSL_ADMIN', true);