报错是这么冒出来的。老站文章地址以 .html 结尾,新站用 WordPress 默认固定链接,迁移后旧地址全部 404。
排查方向其实有限,先把可能性排一排。新站固定链接结构和旧站完全不同。也可能是没有为 .html 后缀写重写规则。
不容易想到的是,旧站的文章 ID 与新站不一致。
第一件事是确认旧地址格式与新地址对应关系
curl -sI https://www.example.com/old-post.html | head -3
再往下写规则把 .html 映射到新结构
rewrite ^/([a-z0-9-]+)\.html$ /$1/ permanent;
等前面都确认过,再抽查若干条旧地址的跳转结果
curl -sI https://www.example.com/old-post.html | grep -i location
那几天正好在做别的变更,先把时间线对齐才敢动手。
恢复的判定其实很直接。旧 .html 地址全部一跳到位,外链流量恢复,收录没有断层,新结构的页面同时正常增长。
提醒一点。规则里要转义点号,写成 .html 会把任意字符都匹配上,导致正常路径也被误跳转,上线前一定用几条真实旧地址逐条验证结果。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。