换域名后还有旧图片链接,先追一张旧图来自哪里,再决定替换工具。正文、Elementor数据、主题文件和缓存都可能保存旧地址。备份并在测试环境试运行后,再按准确旧新网址处理,不要直接对全库做SQL文本替换。
最省事的第一步是找到旧网址的存储来源。数据库里找不到的地址,可能写在CSS文件;数据库已经改好的地址,也可能被旧缓存继续送到浏览器。
先追一张旧图,别急着全库替换
在新站未登录打开出问题的页面,右键图片选“检查”。记录img的src和srcset;如果是背景,则看background-image。随后在Network找到对应请求,核实际请求的地址、状态和是否发生跳转。
例如教学新站https://new.example上,img的src已经是新域名,srcset里却残留https://old.example。桌面与手机选择的候选图不同,于是你以为修好了,换一台设备又看见旧请求。
下图用同一张图片演示src与srcset两个位置。记录时保留完整协议、主机和路径,别只搜“old”三个字母。

接着判断来源:普通文章里的图片区块,先查文章内容;Elementor布局里的背景或图片,查对应组件数据及生成CSS;主题或自定义代码里的固定地址,查那个文件或设置;外部CDN地址则先确认它是否本来就应该独立于网站域名。
“设置 → 常规”的WordPress地址和站点地址很重要,但只修改这两项,不会自动改掉正文里每一个写死的旧链接。若是域名不变、只换主机,应使用同域名迁移流程,不用套本篇的域名替换范围。
为什么复制数据库后,直接替换文本会出问题
数据库不只存普通段落,也存带结构的数据。PHP序列化字符串会记录字节长度,域名变长后,内容变了而长度数字还旧,应用可能无法正确还原那份设置。中文字符还涉及多字节,不能用肉眼数汉字替代字节计算。
即使某次旧新域名碰巧一样长,也不能由此推断全库文本替换安全:不同字段、转义形式、对象和第三方数据仍可能需要各自处理。一个理解序列化格式的工具,应该先还原数据、替换,再按正确格式保存。
下面用自建数据样本展示长度随地址变化的结果。它演示存储机制,不是建议手工修改这些数字。

操作前准备文件与数据库备份,并确认恢复方法可用。备份存在不等于恢复能成功,尤其商城还可能不断新增订单。相关准备见WordPress备份与恢复。
按存储来源选工具,先看试运行报告
普通数据库内容:先做dry-run
维护者已在服务器配置WP-CLI时,可以从服务器的Bash终端进入对应WordPress目录,执行只读试运行。下面的旧新地址是保留域名示例,表范围也必须先核查:
wp search-replace 'https://old.example' 'https://new.example' --all-tables-with-prefix --skip-columns=guid --precise --dry-run
--dry-run表示不保存修改;--all-tables-with-prefix会扫描当前前缀的表,不等于这些表全都应该改;--skip-columns=guid避免把GUID列当普通页面地址替换;--precise使用更精细的PHP处理。参数作用可对照WP-CLI官方文档。
先看报告中的表和字段是否符合预期。如果只准备修文章图片,却在用户信息、第三方业务表中出现大量匹配,暂停并缩小范围。零匹配也不等于网页没有旧链接:它可能是另一协议、带www版本、转义形式,或者根本在文件里。
不使用命令行时,可在测试站安装Better Search Replace,进入其工具页面,填写精确旧新字符串、选择确有需要的表,并勾选dry-run。它支持试运行与序列化处理;不要误以为免费版自动提供所有Pro备份或详细差异功能。备份仍由自己的可靠流程负责。
Elementor数据:使用对应工具
Elementor当前帮助给出的工具路径是“Elementor → Editor → Tools → Replace URL”,旧版本可能直接在Elementor → Tools。填写完整旧新站点地址前,核这次是换域名、换协议,还是连目录路径一起变了。
Replace URL会写入数据,不能把它当只读预览按钮。先在测试副本验证、保存恢复点,再在正式变更窗口执行。完成后按现行工具中的Clear Files & Data重建相关文件;官方现行工具说明可用于核入口,换域名场景还应结合迁移配置检查。
正式修改前,把回退和例外写清楚
这次教学迁移的执行计划可以这样填写:旧站根地址https://old.example;新站根地址https://new.example;已定位到文章内容和Elementor布局;测试副本试运行已核表范围;正式操作由维护者在已确认窗口实施;异常时按指定恢复点回退。
同时列出例外:邮箱地址、仍在使用的第三方图片CDN、外部伙伴链接、不同子站,以及不属于这次迁移的数据。只替换完整旧站URL,可以减少误伤,但不能代替逐项检查。
有订单、会员或询盘持续写入时,恢复数据库可能覆盖变更后新增内容。维护者应先安排短暂写入窗口或其他一致性方案,明确哪些数据不能回滚。多站点网络也不要直接套单站命令。
数据库改完,网页为什么仍显示旧地址
按存储修改 → 生成文件 → 页面缓存 → CDN → 浏览器的顺序核查。只清浏览器缓存无法重写Elementor旧CSS;反过来,重复全库替换也不能修掉浏览器已存的旧响应。
选至少一张普通文章页、一张Elementor页面和一个实际业务入口做未登录验证。检查src、srcset和背景URL,确认新地址直接加载正确图片;再走导航、表单和购买等与迁移有关的功能。表单仍发往旧域名是业务故障,图片显示正常不能替它验收。
最终记录应能说明:“这些旧地址已在指定存储位置替换,生成文件已更新,代表页面没有再请求旧图片域名;保留的外部CDN是已确认例外。”旧域名到新站的301、搜索信号迁移和邮件DNS另按迁移计划处理,本篇图片替换检查不能替代它们。
常见问题
旧域名做了301,图片还能显示,还要替换吗?
若已完成迁移,更新站内直接引用可以减少对旧域名和额外跳转的依赖。先查引用归属和计划,不要仅因暂时能显示就认为旧域名可以马上停用。
可以直接搜索旧域名文字,不带https吗?
范围会更宽,可能命中邮箱、说明文字和外部引用。先用完整已确认URL试运行;确需处理其他形式时,逐项列映射和范围,不一口气做宽泛替换。
试运行通过后,直接去掉dry-run就行吗?
还要确认当前环境、备份恢复点、表范围、写入窗口和例外与测试时一致。正式命令属于实际数据库变更,不应凭一份旧试运行报告盲目执行。