先把当时的情况摆出来。站点从 /wp-content/uploads/ 迁到 /media/,页面和文章都做了 301,但正文里的 img 还写着旧路径。图片全裂,图片搜索的收录一周掉了九成。试过只改模板,正文内容没有变化。

真正麻烦的地方在于,几个原因的现象几乎一样。301 只配了页面规则,图片这类静态资源没有单独重写。另一种情况是正文里存的是绝对地址,改目录后原样输出。

还有一种情况,CDN 还缓存着旧目录的 404,源站补文件也不生效。另外,编辑器重新保存文章时才替换路径,历史文章没人动。

先统计正文里的旧路径

wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_content LIKE '%/wp-content/uploads/%';"

再往下在资源层加 301

location ^~ /wp-content/uploads/ { return 301 https://www.example.com/media/$1; }

批量替换正文地址

wp search-replace 'https://www.example.com/wp-content/uploads/' 'https://www.example.com/media/' --all-tables

剩下的就是抽查图片状态与类型

curl -sI https://www.example.com/media/2024/05/cover.jpg | head -3

恢复的判定其实很直接。正文里的图片地址全部指向新目录,破图告警清零,图片搜索的抓取量两周内回到改版前水平。

改版只迁页面不迁资源是最常见的漏项,图片地址散落在正文里,必须做一次全库替换加资源层兜底。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189