You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloudflare Flexible SSL下WordPress HTTPS配置问题求助

这个问题我之前帮不少开发者踩过坑,核心矛盾就是Cloudflare Flexible SSL的反向代理机制和WordPress的协议检测逻辑没对上,咱们一步步拆解解决:

问题根源先理清楚

首先说无限循环:Flexible SSL的特性是用户→Cloudflare是HTTPS加密,但Cloudflare→你的服务器是HTTP明文。当你把wp_options里的siteurl和home改成HTTPS后,WordPress在服务器端检测到当前请求是HTTP,就会自动触发重定向到HTTPS;但Cloudflare收到HTTPS请求后又转成HTTP发给服务器,一来一回就形成了死循环。

而混合内容错误,则是因为你安装WordPress时用的是HTTP,数据库、主题、插件里大量资源(图片、脚本、样式)的链接还是HTTP,浏览器加载HTTPS页面时会拦截这些不安全的HTTP资源,导致功能异常。

分步解决方法

1. 先搞定/wp-admin的无限循环

要让WordPress“明白”:虽然服务器收到的是HTTP,但用户实际用的是HTTPS访问。打开你的wp-config.php文件,在/* That's all, stop editing! Happy publishing. */这行之前添加以下代码:

// 强制后台管理页面使用HTTPS
define('FORCE_SSL_ADMIN', true);

// 识别Cloudflare反向代理传递的HTTPS标识
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

这段代码会让WordPress读取Cloudflare发送的X-Forwarded-Proto请求头,判断用户实际使用的是HTTPS,从而停止不必要的重定向。

2. 彻底清理混合内容

只改siteurl和home远远不够,数据库里还有大量旧的HTTP链接需要替换:

  • 方法一:用SQL命令批量替换(适合熟悉数据库操作的用户)
    打开phpMyAdmin或你的数据库管理工具,执行以下SQL语句(记得把yourdomain.com换成你的实际域名,wp_换成你的数据库表前缀):
    -- 替换文章内容里的HTTP链接
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');
    -- 替换自定义字段里的HTTP链接
    UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://yourdomain.com', 'https://yourdomain.com');
    -- 替换系统设置里的HTTP链接(包括菜单、主题配置等)
    UPDATE wp_options SET option_value = REPLACE(option_value, 'http://yourdomain.com', 'https://yourdomain.com') WHERE option_name IN ('home', 'siteurl', 'widget_text', 'theme_mods_yourthemename');
    
  • 方法二:用插件替换(更安全,适合新手)
    安装并激活Better Search Replace插件,在插件设置页面:
    • 搜索内容填http://yourdomain.com
    • 替换内容填https://yourdomain.com
    • 勾选所有数据库表,点击「Run Search/Replace」。操作前一定要备份数据库!

3. 检查主题和插件的硬编码链接

有些主题或插件可能会在代码里硬写HTTP链接(比如主题的functions.php、自定义模板、插件配置文件),需要手动排查并替换成HTTPS,或者改用相对路径(比如把http://yourdomain.com/wp-content/xxx改成/wp-content/xxx)。

4. 重新启用Cloudflare的强制HTTPS规则

确保你的页面规则覆盖整个域名,比如规则匹配*yourdomain.com/*,然后开启「始终使用HTTPS」选项。这样所有HTTP请求都会被Cloudflare自动重定向到HTTPS。

最后验证

完成所有步骤后,清除浏览器缓存,访问你的网站和/wp-admin,应该就能正常使用HTTPS,不会再出现循环和混合内容错误了。

内容的提问来源于stack exchange,提问作者Kyle Hawk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:34:59