【发布时间】:2017-10-02 16:53:36
【问题描述】:
我一直在将网站从经典托管迁移到 AWS (EC2 + CloudFront),我想使用 Flexible-SSL,这意味着客户端(浏览器)使用 SSL(HTTPS) 与 CloudFront 通信,并且 CloudFront 调用来源不安全地使用 HTTP。然后需要将 'home' 和 'siteurl' 设置为 'https://www.myowndomain.com' 以生成所有带有 https 的 URL 并避免重定向循环。
第一个问题是混合内容。我在 wp-config.php 中使用此代码解决了它(为了帮助需要它的人):
if (isset($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO']) && $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] == 'https'){
$_SERVER['HTTPS']='on';
}
第二个问题还没有解决,花了我太多天...
当我进入 wp-login 并登录时...页面回复我:
403 - 抱歉,您无权访问此页面
如果我返回主页,会显示带有菜单栏的网站,但是当我单击一个选项时,它会再次以相同的消息(和 HTTP 状态)回复我。
来之前我做过的事情:
- 禁用所有插件,重命名所有插件文件夹。
- 使用 wp-cli 禁用插件。
- 使用 wp-cli 在数据库中搜索并将所有“http://”字符串替换为“https://”。
- 检查 home 和 siteurl wordpress 变量是否为“https://www.myowndomain.com”。
- 将主题更改为默认主题。
- 重新加载/删除 .htaccess
- 启用 wordpress 日志并且没有任何记录。
- 检查所有权限,显然一切正常。
- 检查数据库表前缀配置。
- 使用 Apache 服务器端的取证模块检查所有标头。一些 CloudFront 标头添加到请求中,但显然没有任何可能影响问题的内容。
- 检查 wordpress 所需的所有 cookie 是否由浏览器发送并由 Apache 服务器通过 CloudFront 接收:wordpress_logged_in_ 和 wordpress_sec_。
- 稍微调试一下,在代码中添加一些检查点...但我不是 wordpress 开发人员,要理解为什么会发生这种情况,我花了很多时间。 403 页面是从函数 get_admin_page_parent() 中的 /var/www/html/wp-admin/includes/plugin.php 触发的。
- 一次又一次地清理浏览器缓存。
- 显然一遍又一遍地搜索。
真是一团糟!我采取的最后一项措施是进行全新的 wordpress 安装。结果……一样。
我现在卡住了。欢迎提出任何建议。
提前致谢。
【问题讨论】:
标签: php wordpress apache amazon-web-services