免费WordPress 选型卡壳、站点慢、不收录、没咨询?提交网址,获取问题清单与可执行方案。

免费咨询 →
资源

WordPress 迁移后 404 和图片丢失怎么排查:伪静态、URL 替换与媒体文件

换主机或换域名后出现页面 404、图片不显示,问题多集中在伪静态规则、数据库中的旧地址、媒体文件不完整、文件权限和 CDN 缓存。本文按先页面后图片的顺序,给出逐项检查命令与修复方法。

发布于 2026年10月11日约 6 分钟阅读WpWork 编辑部
WordPress 迁移后 404 和图片丢失怎么排查:伪静态、URL 替换与媒体文件|资料 / 清单

迁移完成后首页能打开,但文章页 404、图片显示为裂图,是 WordPress 搬家后最常见的两类问题。它们大多不是数据真的丢了,而是新环境的配置、数据库中残留的旧地址,或媒体文件同步不完整造成的。下面按「先页面、后图片」的顺序排查。动手之前,请先保留新旧两端的完整备份(数据库与 wp-content 目录)。

一、页面 404:先判断是哪一种

  • 首页正常,所有文章页都 404:几乎都是伪静态(重写规则)没有生效;
  • 只有部分页面 404:可能是这些内容没有迁移过来,或 slug、分类结构发生了变化;
  • 访问时跳回旧域名,或出现重定向循环:站点地址设置或 HTTPS 识别有问题。

第 1 步:检查伪静态规则

Apache 环境确认站点根目录存在 .htaccess 且包含 WordPress 默认规则,同时虚拟主机允许 AllowOverride。Nginx 环境需要在站点配置中加入:

location / {
    try_files $uri $uri/ /index.php?$args;
}

宝塔等面板可以在站点设置的「伪静态」中直接选择 WordPress 规则。修改后重载 Nginx,再到后台「设置 → 固定链接」点一次保存,刷新重写规则;也可以用 WP-CLI:

wp rewrite flush --hard
wp rewrite list --format=count

第 2 步:核对站点地址

wp option get siteurl
wp option get home

两者都应是新地址,包括 http 或 https、是否带 www 都要和实际访问一致。使用 CDN 或反向代理时,还要确认 WordPress 能正确识别 HTTPS,否则会出现「重定向次数过多」。

第 3 步:确认内容是否完整

对比新旧站点的已发布内容数量:

wp post list --post_type=post,page --post_status=publish --format=count

数量一致但部分 URL 仍然 404 时,检查固定链接结构是否与旧站一致(例如旧站是 /%postname%/,新站变成了 /archives/123)。结构确实需要变化时,要为旧 URL 配置 301 重定向,避免已收录的页面变成 404。

二、图片丢失:先看浏览器请求的是哪个地址

在裂图上右键选择「在新标签页中打开图片」,或在开发者工具的 Network 面板中筛选 Img,查看请求地址与状态码:

  • 地址仍是旧域名或旧 IP:数据库中的 URL 没有替换,见第 4 步;
  • 地址是新域名但返回 404:文件没有同步过来或路径不对,见第 5 步;
  • 地址正确但返回 403:权限或防盗链问题,见第 6 步;
  • 控制台提示混合内容被拦截:HTTPS 页面引用了 http 图片,同样通过 URL 替换解决。

第 4 步:安全地替换数据库中的旧地址

WordPress 会把序列化数据(小工具、主题设置、页面构建器数据等)存进数据库。直接用 SQL 的 REPLACE 批量修改会破坏序列化长度,导致设置丢失。推荐使用 WP-CLI 的 search-replace,先预演再执行:

wp search-replace 'https://old.example.com' 'https://www.example.com' --all-tables --precise --dry-run
wp search-replace 'https://old.example.com' 'https://www.example.com' --all-tables --precise

注意同时处理 http 与 https、带与不带 www 的写法,以及 JSON 中被转义的地址(如 https:\/\/old.example.com,页面构建器的数据里很常见)。替换完成后清理对象缓存:

wp cache flush

并同时清理页面缓存插件和 CDN 的缓存。

第 5 步:检查媒体文件是否完整

  • 对比新旧服务器 wp-content/uploads 的文件数量与总大小:find wp-content/uploads -type f | wc -l 和 du -sh wp-content/uploads;
  • 部分迁移插件会因为体积限制跳过媒体库,需要用 rsync 或 SFTP 单独补传,例如 rsync -avz 旧服务器:/path/wp-content/uploads/ wp-content/uploads/;
  • 原图存在但缩略图缺失(列表页、卡片图裂开)时,可以补生成缩略图:wp media regenerate --only-missing --yes;
  • 检查 upload_path、upload_url_path 选项是否残留了旧服务器的绝对路径:wp option get upload_path。

第 6 步:权限、防盗链与 CDN

  • 上传目录的属主应为 Web 服务运行用户(宝塔环境通常为 www),目录 755、文件 644,例如 chown -R www:www wp-content/uploads;
  • 检查面板或 CDN 的防盗链设置,确认新域名已加入白名单;
  • 原来使用对象存储(OSS、COS、S3 等)托管媒体的,确认对应插件已配置新的存储桶和访问域名,且存储桶允许公开读取;
  • CDN 可能缓存了迁移期间的 404 响应,修复后要清理 CDN 缓存再验证。

三、迁移后的收尾检查

  1. 在 Search Console 或站长平台查看抓取错误,逐条处理新增的 404;
  2. 重新生成并提交 XML 站点地图;
  3. 抽查不同类型的页面:文章、页面、分类、标签、商品和附件页;
  4. 检查主题设置、小工具和页面构建器中的背景图与图标;
  5. 旧服务器至少保留一段时间,以便补传遗漏的文件。

延伸阅读:WordPress 迁移与托管专题、站点迁移实践清单、常见报错速查。search-replace 的全部参数说明见 WP-CLI 官方文档。

常见问题

可以直接在 phpMyAdmin 里批量替换域名吗?

不建议。序列化数据的长度会对不上,导致主题设置、小工具等配置丢失。使用 WP-CLI search-replace 或支持序列化的迁移工具更安全。

为什么后台媒体库能看到图片,前台却不显示?

媒体库读取的是数据库记录,而前台页面里写死的可能是旧地址,或者是缓存的旧 HTML。替换 URL 并清理缓存后再检查。

迁移会影响搜索排名吗?

无法保证排名完全不变。能做的是保持 URL 不变或配置正确的 301、及时修复 404 并提交新的站点地图,尽量减少不必要的波动。

迁移问题较多,或同时涉及换域名、改版时,可以 申请免费诊断,我们帮你列出需要处理的 URL 与配置项。

Internal Links

延伸阅读(按行业与技术标签)

同行业案例、方案、主题与资源互相串联,方便搜索引擎与读者顺着意图走完路径。