这个坑值得记一笔。换 CDN 服务商后,旧域名 cdn-old.example.com 直接停了解析。日志里 404 一天三千多条,referer 大多是外部论坛和采集站,图片全部裂开。源站文件都在,新域名访问正常。

刚开始盯着「站内老文章正文里也存着旧域名地址」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。外链和转载内容里写的是旧 CDN 的绝对地址,没人批量替换;旧域名停解析前没有留 301 或别名回源;CDN 服务商回收域名后,边缘节点直接返回 404。

先按 referer 统计 404 的来源

awk '$9==404 && $0~/cdn-old/{print $11}' access.log | sort | uniq -c | sort -rn | head

再往下在数据库里数一下还有多少条旧地址

SELECT COUNT(*) FROM wp_posts WHERE post_content LIKE '%cdn-old.example.com%';

旧域名先恢复解析,用 301 指到新域名

server_name cdn-old.example.com; return 301 https://cdn-new.example.com$request_uri;

站内地址批量替换后复检

curl -s https://www.example.com/p/1024 | grep -c 'cdn-old'

改完先别撤,确认这几项。旧域名的 404 降到个位数,站内图片全部恢复,外部论坛里的老帖配图也能正常显示。

补一句。旧 CDN 域名不能一停了之,外链不归你管,留一条 301 比事后挨个联系站长省事得多。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189