列表页第二页开始全部跳回第一页,地址栏里 /page/2 一闪就变成栏目首页,第三页第四页同样,后台生成的分页链接本身是对的。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

wp rewrite list --match=/page/2
wp rewrite flush
curl -sI https://example.com/guide/page/2/ | grep -i '^HTTP'

自定义的 rewrite 规则排在了 WordPress 自带分页规则前面,/page/2 被那条更宽的前缀规则先匹配走。规则一旦命中就不再往下试,分页参数根本没进查询。这一点先确认清楚,后面就不用反复试。

「分页重写规则」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

具体做法是,用 wp rewrite list 看规则顺序,确认分页规则排在第几条;把自定义规则挂到 init 且优先级调低,让它排在分页规则之后;加完规则执行 wp rewrite flush,别只保存文件;逐页点一遍 2 到 5 页,确认地址栏和列表内容都对得上。

改完照着核一遍,第二页返回 200 且列表内容换成下一批文章,地址栏保持 /page/2/ 不再跳走。

作者 9823189