这类问题我又碰上了一次。站点从 old.example.com 搬到 www.example.com,Nginx 里只写了 return 301 https://www.example.com,旧站四万篇内页的路径没做映射,GSC 地址更改工具提交后旧域名的内页全是 404。

排查方向其实有限,先把可能性排一排。跳转规则用 return 301 到根路径,路径部分被整体丢弃;新旧目录结构不同,简单拼路径也未必对得上,需要映射表;CDN 上还留着旧域名的缓存,部分请求根本没到源站。

动手时先抽查旧域名几条内页的实际返回

curl -sI https://old.example.com/post/12345 | grep -Ei "HTTP/|location"

保留路径并补上映射表

rewrite ^/post/(\d+)$ https://www.example.com/article/$1 permanent;

从旧站导出路径清单做批量核对

SELECT guid FROM wp_posts WHERE post_type='post' AND post_status='publish';

隔了一天再看,现象没变,说明不是偶发。

恢复的判定其实很直接。旧域名随机抽 200 条内页返回 301 且 Location 指向新站对应文章,GSC 里旧资源的 404 数量不再增长,新站对应页开始有排名。

这里还有个坑。迁移前先把旧站 URL 清单和日志里被抓过的地址都导出,漏掉的往往是标签页和分页这类非文章地址。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189