WordPress网站迁移后图片打不开修复
WordPress网站迁移后图片打不开,通常是数据库里还保留着旧域名地址,或者图片文件没有完整搬到新服务器。
只要把数据库中的旧域名替换成新域名,并确认wp-content/uploads目录权限正常,大部分情况都能恢复显示。
下面按零基础也能照做的顺序讲清楚。
先确认是文件丢失还是地址错误
打开网站前台,按F12查看图片元素的src地址。
如果地址里出现旧域名,说明是数据库中的链接没替换;
如果地址是新域名但返回404,说明图片文件本身没上传成功。
登录新服务器,进入网站根目录,检查:
ls -lh wp-content/uploads/2024/
如果目录为空或缺少迁移前的月份文件夹,需要重新同步uploads目录。
用SQL替换数据库里的旧域名
先备份数据库,再执行替换。
宝塔面板操作路径:数据库 → phpMyAdmin → 选择对应数据库 → SQL,输入以下语句,把old.com和new.com换成你的实际域名:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://old.com', 'http://new.com');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://old.com', 'http://new.com');
UPDATE wp_posts SET guid = REPLACE(guid, 'http://old.com', 'http://new.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://old.com', 'http://new.com');
如果旧站是HTTPS,把http://改成https://再执行一次。
执行后刷新网站,图片地址会更新为新域名。
检查wp-config和站点地址设置
数据库替换后,进入WordPress后台 → 设置 → 常规,确认WordPress地址和站点地址都已经是新域名。
如果后台进不去,可以直接修改wp-config.php,在define('WP_DEBUG', false);下面添加:
define('WP_HOME', 'http://new.com');
define('WP_SITEURL', 'http://new.com');
保存后重新访问后台。
注意不要同时保留旧域名的定义,否则会出现跳转混乱。
处理目录权限和伪静态规则
图片文件存在但访问返回403,通常是权限问题。
在宝塔面板进入网站根目录,把wp-content/uploads权限设为755,所有者设为www:
chown -R www:www wp-content/uploads
chmod -R 755 wp-content/uploads
如果使用Nginx,检查伪静态是否配置了WordPress规则。
宝塔路径:网站 → 设置 → 伪静态,选择wordpress并保存。
缺少伪静态时,图片可能被错误地交给PHP处理,导致无法打开。
验证修复结果和常见遗漏
完成以上步骤后,用无痕窗口打开文章页,确认图片正常加载。
再检查以下位置:
- 浏览器控制台是否还有旧域名请求
- 是否启用了CDN或对象存储,需要刷新缓存或同步文件
- 主题选项、小工具、自定义字段中是否残留旧链接
- 是否使用了图片懒加载插件,清除插件缓存
如果只有部分图片打不开,重点检查对应文章中的自定义字段和相册短代码。
全部图片都打不开时,优先回到数据库替换和uploads目录完整性这两步。
常见疑问
替换数据库后图片还是旧地址,可能是缓存插件或CDN仍在返回旧内容。
先停用缓存插件,再清除CDN缓存,然后强制刷新浏览器。
迁移后新上传的图片正常,旧图片打不开,说明数据库替换不完整。
检查wp_postmeta表中是否还有旧域名,尤其是图集和页面构建器保存的数据。
使用宝塔一键迁移后图片缺失,检查迁移时是否勾选了uploads目录。
如果没勾选,用FTP或scp命令把旧服务器的wp-content/uploads完整同步到新服务器对应位置。
只要按顺序排查数据库地址、文件完整性和权限配置,WordPress迁移后图片打不开的问题基本都能定位并修复。
操作前记得备份数据库和网站目录,避免替换出错后难以回退。