这个坑值得记一笔。服务器没开伪静态时,所有地址都带 index.php,看着很长,也不确定是否影响收录。
把日志和配置对完,能解释这个现象的基本就这几处。固定链接设置为朴素模式;Nginx 缺少 try_files 规则;插件生成的链接沿用了当前结构。
先查看当前固定链接结构
wp option get permalink_structure
随后开启伪静态并写规则
try_files $uri $uri/ /index.php?$args;
末了改结构后确认旧地址能跳转
curl -sI https://www.example.com/index.php/a/ | head -1
中途换过一次思路,把范围缩到最小的那一层,反而快了。
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
怎么算真的好了,看的是同一批现象。地址变成干净的短路径,旧地址 301 到新地址,收录平滑过渡。
直接改结构不做跳转,等于把所有已收录地址变成 404,改之前先把旧格式的跳转规则准备好。改完隔天再看一次 404 报告,旧文章里的手写链接也要一起排查,提前导出旧地址清单逐条核对,比较稳妥。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。