WordPress网站套cloudflare tunnel后图片显示不正常解决方法
前言
WordPress网站套cloudflare tunnel后,什么都正常,就是图片不显示,并且不能登录后台,/wp-admin页面可以打开,输入账号密码不能登录,下面把解决方法记录一下。
问题分析:
你的 WordPress 以为自己在运行 HTTP,但 Tunnel 让外界看到的是 HTTPS,这种“认知错位”导致了登录失败和图片加载问题。
核心原因:反向代理下的 HTTPS 识别问题
Cloudflare Tunnel 的工作机制是:它在你的服务器上建立一个安全的“管道”,将用户的 HTTPS 请求“翻译”成 HTTP 请求转发给你的 WordPress。对于你的 WordPress 来说,它感觉自己正运行在一个普通的 HTTP 环境下
然而,当你尝试登录或访问图片时,WordPress 会检查当前协议并尝试强制跳转到 HTTPS,或者生成 HTTP 链接。Cloudflare 收到这个 HTTP 请求后,又会将其转为 HTTPS。这就形成了一个死循环,导致你无法登录;同时,页面上的图片链接也因为协议不匹配而无法加载
解决方案:修改 wp-config.php 文件
你不需要动数据库,也不需要去 Cloudflare 面板改复杂的设置。只需要通过 SFTP 或主机管理面板,找到你 WordPress 根目录下的 wp-config.php 文件,在 <?php 这一行的 下面 ,添加以下全部代码即可。
/** ************** 修复 Cloudflare Tunnel 导致的 HTTPS 和登录问题 **************/
// 1. 告诉 WordPress,它收到的来自 Cloudflare Tunnel 的 HTTP 请求,实际是外界的 HTTPS 请求
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
// 2. 强制管理后台使用 HTTPS (修复登录跳转问题)
define('FORCE_SSL_ADMIN', true);
// 3. 修复因代理导致的 Cookie 域名混乱,解决“抱歉,您不能访问此页面”的问题
define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST']);
/** ******************************************************************/
