ZBlogCMS 部署 SSL 后图片 Mixed Content 报错怎么办

liulian
liulian 初级会员超兽战士
发布于 2026-10-08 07:32 ·2 浏览 ·0 回复

照着这篇做完,你能把 Z-BlogPHP 站点上 HTTPS 后浏览器控制台里的 Mixed Content 报错逐条定位到来源,并彻底清掉,让地址栏的小锁正常显示。

Mixed Content(混合内容)的本质很简单:页面本身走 https,但里面还有资源走 http,浏览器就把这些资源拦下来,图标不显示、样式错乱,控制台刷一片红。下面按「先看报错 → 改配置 → 洗数据库 → 补漏网」的顺序处理。

第一步:先看清到底是哪些资源在报错

打开出问题的页面,按 F12,切到 Console(控制台)标签,找以 Mixed Content 开头、后面跟着一个 http:// 开头的链接的红色提示。

把报错 URL 抄下来,大致分成三类:文章正文里的图片(形如 /zb_users/upload/...)、主题模板里写死的图片(logo、背景图、广告位)、插件输出的资源。分清楚这三类,后面才好对症下药。

注意:要在 https 页面上直接按 F12 看,在 http 页面上看是没有这些报错的,容易白忙一场。

第二步:把后台的网站地址改成 https

登录 Z-BlogPHP 后台(默认入口 /zb_system/admin/,以 1.7.3 版本为例),点左侧菜单「网站设置」→「全局设置」→「基础设置」。

找到「网站地址」,把 http://你的域名 改成 https://你的域名;下面的「固定网站域名」建议打开,开启后所有页面都会按这个域名生成链接。

保存后回到首页,按 Ctrl+F5 强制刷新。如果报错减少了一半,说明生效了。

第三步:批量替换数据库里残留的旧链接

后台改的是「以后生成」的链接,历史文章正文里已经写死的 http:// 图片地址不会自动变。

登录 phpMyAdmin(宝塔面板在「数据库」里点「管理」),左侧选中你的 Z-BlogPHP 数据库,点顶部「SQL」标签页,粘贴执行(把域名换成你自己的,表前缀按实际改):

UPDATE zbp_post SET log_Content = REPLACE(log_Content,'http://www.example.com','https://www.example.com');
UPDATE zbp_post SET log_Intro   = REPLACE(log_Intro,'http://www.example.com','https://www.example.com');
UPDATE zbp_config SET conf_Value = REPLACE(conf_Value,'http://www.example.com','https://www.example.com');

zbp_post 存文章(正文是 log_Content、摘要是 log_Intro),zbp_config 存主题和插件的配置项,主题里设置的 logo、横幅图地址通常就在这儿。

注意:执行 SQL 前先在 phpMyAdmin 里点「导出」备份整库;表前缀不一定是 zbp_,去 /zb_users/c_option.php 里看 ZC_DATABASE_PREFIX 的值。

第四步:处理模板和模块里写死的 http 链接

还有一部分链接既不在数据库也不在后台设置里,而是直接写死在文件中。

后台进「模块管理」,逐个编辑侧栏、导航栏里的「自定义 HTML」模块,把里面的 http:// 改成 https:// 或用 // 开头的协议相对写法。

模板文件则通过 FTP 或宝塔「文件」管理器进入 /zb_users/theme/你的主题目录名/,在文件搜索框里搜索 http://,找到后改掉;插件目录 /zb_users/plugin/ 同样搜一遍。

注意:改主题文件前先整目录备份,主题一升级你的修改会被覆盖,能通过后台配置解决的就别改文件。

第五步:处理反代或 CDN 导致程序判断不出 HTTPS

如果走的是 Nginx 反代、宝塔面板或 CDN,PHP 拿到的 $_SERVER['HTTPS'] 可能是空的,Z-BlogPHP 会以为自己在 http 环境,生成出来的链接又变成 http。

宝塔用户进「网站」→ 对应站点「设置」→「配置文件」,在 location ~ \.php 段里加上一行:

fastcgi_param HTTPS on;

用 CDN 回源的,在回源请求头里加 X-Forwarded-Proto: https。保存后重载 Nginx。

第六步:清缓存并复查

回到后台,点「清空缓存并重新编译模板」,再清一次浏览器缓存。

重新打开页面按 F12 看 Console,确认没有新的 Mixed Content 提示,地址栏出现锁形图标。想更保险可以把域名丢进 whynopadlock.com 这类在线检测工具跑一遍。

小结

  • 后台「网站设置 → 全局设置 → 基础设置」改网站地址并固定域名,是第一步。
  • 数据库用 UPDATE ... REPLACE 洗 zbp_post.log_Content、log_Intro 和 zbp_config.conf_Value,执行前必须备份。
  • 主题目录和「自定义 HTML」模块里写死的 http 链接要手动搜一遍。
  • 有反向代理或 CDN 时,加 fastcgi_param HTTPS on;,否则程序判断不出 HTTPS。
  • 最后清缓存、看 F12 控制台和地址栏锁形图标确认修复。
版权声明:本文来自 GJ站长论坛《ZBlogCMS 部署 SSL 后图片 Mixed Content 报错怎么办》
原文链接:https://www.gj0.com/thread-818.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~