列表页第二页的源代码里,canonical 写的是不带页码的第一页地址,搜索结果里第二页的内容一直不出现,翻页数据也统计不到。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

curl -s https://example.com/news/page/2/ | grep -i canonical
# 输出应指向 /news/page/2/ 而不是列表首页

模板复用了列表首页的 canonical,把带页码的页面全当成第一页的副本;分页本身是独立页面,只有自指才不会被合并进第一页的索引里。这一点先确认清楚,后面就不用反复试。

「canonical 分页」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

改完隔一天再看一次,当场正常不代表能稳住。

具体做法是,让 canonical 按当前请求输出完整的分页地址,不要复用首页;把模板里写死成首页地址的那一段删掉;确认带参数翻页的地址同样能正确自指,不被合并。

改完照着核一遍,每页的 canonical 与自己地址完全一致,深层页开始被单独收录。

作者 9823189