记录一下那天晚上的排查过程。把图片从 img.example.com 迁到静态资源域名后,正文图片已改,srcset 和 og:image 里仍指向旧域名,旧域名解析已删,抓取日志里图片 404 每天四千条。

排查方向其实有限,先把可能性排一排。主题只替换了 src,srcset 由另一个函数生成。也可能是历史文章里存的是绝对地址,数据库替换漏掉了序列化字段。

另外,CDN 上的旧图片没做保留期,解析删掉后立即 404。

第一件事是统计正文里旧域名的出现次数

wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_content LIKE '%img.example.com%';"

然后用搜索替换工具改序列化安全的数据

wp search-replace 'img.example.com' 'static.example.com' --all-tables --precise

剩下的就是确认 srcset 也指向新域名

curl -s https://www.example.com/about/ | grep -o 'srcset="[^"]*"' | head -3

别只看报错消失,验证要多做一步。正文与 srcset 中旧域名计数为 0,图片 404 在日志里归零,图片搜索的展现量两周后回到迁移前水平。

这里还有个坑。直接跑 SQL 替换会破坏序列化长度,必须用带序列化处理能力的工具,改完再抽查一条含数组字段的文章。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189