我一直在将网站从经典主机迁移到AWS(EC2 + CloudFront),我想使用Flexible-SSL,这意味着客户端(浏览器)使用SSL(HTTPS)与CloudFront通信,CloudFront调用使用HTTP的原因不安全。然后需要将“home”和“siteurl”设置为“https://www.myowndomain.com”,以便使用https生成所有网址,并避免重定向循环。
第一个问题是混合内容。我在 wp-config.php 中使用此代码解决了它(为了帮助需要它的人):
if (isset($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO']) && $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] == 'https'){
$_SERVER['HTTPS']='on';
}
第二个问题仍然没有得到解决,并且花了我太多天......
当我进入wp-login并登录时...页面回复我:
403 - 很抱歉,您无法访问此页面
如果我回到主页,会显示带有菜单栏的网站,但是当我点击一个选项时,它会再次使用相同的消息(和HTTP状态)回复我。
来到这里之前我做过的事情:
我现在被困住了。欢迎提出任何建议。
提前致谢。
答案 0 :(得分:0)
请检查此link是否有同样的问题,并通过修复损坏的wp-options表解决。希望这会对你有所帮助。
答案 1 :(得分:0)
1)在您的发行版的CloudFront Behaviors中,启用“将HTTP重定向到HTTPS”。
2)您需要将以下代码添加到wp-config.php。
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
{
$_SERVER['HTTPS'] = 'on';
}
if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) )
{
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = trim($ips[0]);
}
elseif ( isset($_SERVER['HTTP_X_REAL_IP']) && !empty($_SERVER['HTTP_X_REAL_IP']) )
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
} elseif ( isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) )
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CLIENT_IP'];
}