先做一件事:把“异常”从结果描述改成可复现的条件描述。不要从“为什么这些页面不收录”开始,而要从“在什么参数组合下,页面从正常变成异常”开始。只有当同一路径在去掉某个参数后恢复正常、加回后又异常,这个参数才值得继续追。否则你只是在收集噪声。
选一个当前表现正常的页面作为基线,记录它在无参数、单参数、双参数三种状态下的可观察差异。可观察差异包括返回状态码、最终呈现内容、canonical 指向、页面是否被内部链接指向,以及站点地图里是否包含该 URL。这里的关键不是记录越多越好,而是只记录能稳定重复出现的差异。
假设一个列表页 /list 正常,而 /list?page=2 在部分抓取记录中异常。先不要改任何配置,分别请求 /list、/list?page=2、/list?page=2&sort=new,对比三者返回的正文是否包含同一批条目、canonical 是否都指向无参数版本、页面是否都能通过站内链接到达。如果只有带 sort 的组合异常,问题范围就缩到参数组合,而不是整个分页机制。
缩小复现条件之后,通常面对三种取舍。它们不是都要做,而是根据复现结果选一条。
动作和结果的对应关系是:如果你选择改写,下一步要检查内部链接是否还指向旧参数;如果还指向,改写的影响会被内部链接抵消。如果你选择退出抓取,下一步要确认这些 URL 是否已经被索引,而不是假设限制抓取就等于清理完成。
同一现象可能有多个合理解释,不要用单一指标下结论。以下证据组合可以帮助区分:
假设你发现 ?sort= 参数下的页面 canonical 指向了自身,而无参数版本 canonical 指向自己。这时两个 URL 都在声明自己是规范版本,冲突就出现了。把带参数版本的 canonical 改为指向无参数版本后,下一步要观察的是:内部链接和站点地图是否也跟着更新。如果只有 canonical 改了,链接仍然指向带参数版本,复现条件就没有真正消除。
个别样本成立,不代表可以批量套用。以下边界需要在扩大处理前确认:
一个可执行的收尾动作是:把复现条件写成一条可验证的规则,例如“当 URL 同时包含 page 和 sort 且 sort 值不为默认值时,返回规范版本”。然后用这条规则去检查一批 URL,看它是否误伤了本应保留的页面。如果误伤比例高,说明规则太宽,需要回到参数组合层面继续缩小;如果误伤比例低,再考虑规模化处理。HTTPS 不保证安全无漏洞或排名,所以不要把它当作参数问题的替代解释。
最终判断标准不是“异常页面是否消失”,而是“同一路径在去掉目标参数后是否稳定恢复正常,且恢复后的版本能被内部链接和站点地图一致指向”。只有这个条件成立,你才真正缩小了复现条件,而不是暂时掩盖了它。