ZBlogCMS 搬家之后图片无法加载怎么处理
学完这篇,你能自己把 ZBlog 搬家后图片不显示的问题定位到具体原因,并用 SQL 替换、目录权限、配置修正这三招把图片全部救回来。
ZBlog 搬家后图片打不开,九成以上不是图片文件丢了,而是「数据库里存的还是旧地址」或「新服务器的路径/权限对不上」。下面按排查顺序走一遍。
第一步:用浏览器确认图片到底错在哪
这一步决定后面往哪个方向修,先别急着改数据库。
用 Chrome 打开一篇配图不显示的文章,按 F12 打开开发者工具,切到 Network(网络)标签,按 Ctrl+F5 强制刷新。在过滤框里输入 jpg 或 png,看这些图片请求:
- 状态码 404:图片文件不在服务器上,或者路径大小写不对
- 状态码 403:文件在,但目录权限不够,Web 服务器读不了
- 状态码 200 但页面还是不显示:多半是 HTTPS 混合内容(Mixed Content),看 Console 标签会有红色警告
- 请求的域名是旧域名:数据库里存的是绝对地址,需要批量替换
把鼠标放到请求上,能看到完整 URL,这就是你要处理的真实路径。
第二步:替换数据库里的旧域名
这一步解决「URL 里还是旧域名」的情况,改完图片地址立刻指向新站。
打开 phpMyAdmin(宝塔面板里叫「数据库」→ 右侧「管理」,或 phpMyAdmin 独立地址),选中你的 ZBlog 数据库。先用 SELECT 确认有多少条要改,表前缀默认是 zbp_,如果你改过,可以到 zb_users/c_option.php 里看 ZC_DATABASE_TABLE_PREFIX。
SELECT COUNT(*) FROM zbp_post WHERE log_Content LIKE '%旧域名.com%';
确认有数据后,在「SQL」标签页执行替换(把域名换成你自己的):
UPDATE zbp_post
SET log_Content = REPLACE(log_Content, 'http://www.旧域名.com', 'https://www.新域名.com')
WHERE log_Content LIKE '%旧域名.com%';
UPDATE zbp_post
SET log_Intro = REPLACE(log_Intro, 'http://www.旧域名.com', 'https://www.新域名.com')
WHERE log_Intro LIKE '%旧域名.com%';
注意:执行 UPDATE 前一定要先导出备份这张表(导出 → 快速 → 执行),替换是不可撤销的。另外如果旧站同时存在 http 和 https 两种写法,要分两条语句各跑一次。
第三步:改后台的网站域名设置
这一步解决「文章里是相对路径,但后台拼出了旧域名」的情况。
登录 ZBlog 后台,左侧菜单点「网站设置」→「全局设置」,找到「网站域名(ZC_BLOG_HOST)」这一栏。如果里面写着旧域名,改成新域名(要带 https://,结尾不要加斜杠);如果拿不准,直接清空,Z-BlogPHP 1.7 会自动识别当前访问的域名。
注意:搬完家如果后台登录后一直跳回旧域名,或者点任何菜单都跳走,就是这里的问题。可以先直接改数据库:
UPDATE zbp_config SET conf_Value='' WHERE conf_Name='ZC_BLOG_HOST';,改完再回后台设置。
第四步:检查 upload 目录是否拷全、权限是否正确
这一步解决 404 和 403。
用 FTP 或宝塔「文件」功能,对比新旧两站的 zb_users/upload/ 目录。这个目录按年月分子目录存放附件,搬家时最容易漏传或中断。
传完后 SSH 登录服务器执行(把路径换成你的站点根目录):
chown -R www:www /www/wwwroot/新站点
find /www/wwwroot/新站点 -type d -exec chmod 755 {} \;
find /www/wwwroot/新站点 -type f -exec chmod 644 {} \;
注意:从 Windows 服务器搬到 Linux 一定要检查大小写。Linux 区分大小写,数据库里写的是
/zb_users/upload/,实际目录如果是/zb_users/Upload/,浏览器照样 404。用ls /www/wwwroot/新站点/zb_users/核对一下真实目录名。
第五步:处理 HTTPS 混合内容
如果站点开了 https,而数据库或主题模板里还写着 http:// 的图片地址,Chrome 会直接拦截,图片显示为空白。
最省事的办法是第二步的 SQL 再跑一遍,把 http://www.新域名.com 替换成 https://www.新域名.com。另外检查当前主题目录(zb_users/theme/你的主题/template/)里有没有硬编码的 http 图片地址。
第六步:清缓存
改完之后如果还是老样子,按顺序清三处:ZBlog 后台「网站设置」→「清空缓存并重新编译模板」;宝塔面板里清 Nginx/Apache 缓存;浏览器按 Ctrl+Shift+Delete 清除缓存。用了 CDN 的,去 CDN 控制台刷新 URL。
小结
- 先开 F12 看 Network 状态码,404 查文件、403 查权限、200 不显示查 HTTPS 混合内容
- 图片 URL 带旧域名 → phpMyAdmin 里 UPDATE 替换
zbp_post的log_Content和log_Intro - 后台「网站设置 → 全局设置 → 网站域名」要改成新域名或直接清空
zb_users/upload/必须完整拷贝,Linux 下注意目录大小写和 755/644 权限- 所有改动前先备份数据库,改完清空 ZBlog 缓存和浏览器缓存
原文链接:https://www.gj0.com/thread-583.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。