添加Cloudflare SSL后WordPress wp-admin页面无法加载求助
WordPress + Cloudflare SSL 问题原因解析
一、修改HTTPS后wp-admin无法访问的核心原因
- Cloudflare SSL模式不匹配:如果使用了Cloudflare的「灵活SSL」模式,Cloudflare与你的服务器之间是HTTP通信。当你将WordPress地址改为HTTPS后,后台会强制要求HTTPS访问,但服务器实际收到的是HTTP请求,会触发循环重定向或请求验证失败,导致wp-admin无法打开。
- HTTPS请求头未被识别:Cloudflare会通过
HTTP_X_FORWARDED_PROTO头告知服务器当前是HTTPS请求,但WordPress默认未开启对该头的识别。这会让WordPress误以为处于HTTP环境,后台加载的CSS、JS等资源仍用HTTP链接,浏览器的混合内容拦截机制会阻止这些资源加载,最终导致后台页面无法正常访问。
二、HTTP环境下附件图片无法显示的原因
- 混合内容拦截:在HTTPS环境下上传图片时,WordPress会将图片永久URL以HTTPS格式存入数据库。切回HTTP访问前端时,这些HTTPS图片属于「混合内容」(HTTP页面加载HTTPS资源),现代浏览器为安全会主动拦截这类请求,导致图片无法显示。
- 数据库URL未同步更新:你曾临时将站点地址改为HTTPS,数据库中部分资源(如附件、主题/插件资源)的URL已被替换为HTTPS。改回HTTP后未批量更新这些URL,因此HTTP环境下加载这些HTTPS资源会被拦截。
快速解决建议
- 调整Cloudflare SSL模式为「完全SSL」或「严格SSL」(确保你的服务器已部署有效SSL证书,自签证书可适配完全模式)。
- 在
wp-config.php文件中添加以下代码,让WordPress识别Cloudflare的HTTPS请求头:
define('FORCE_SSL_ADMIN', true); if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
- 确认WordPress的「WordPress地址(URL)」和「站点地址(URL)」均为HTTPS后,在phpMyAdmin中执行SQL语句批量更新数据库中的旧URL:
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://example.com', 'https://example.com'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://example.com', 'https://example.com');
(注意替换wp_为你的数据库表前缀,example.com为你的实际域名)
内容的提问来源于stack exchange,提问作者Shahpari
相关产品推荐
相关产品推荐

