先给结论:不要试图穷举所有参数组合,而是把“有效地址集合”定义为会被站点主动返回正常内容、且值得被索引的地址子集。对无限参数空间,用死链检查工具时应当先建立“可接受地址模式”白名单,再对白名单之外的模式做抽样验证,而不是让爬虫跟着每一个参数分支跑下去。这样做的直接结果是:抓取预算不会在参数迷宫里耗尽,你拿到的报告里,404 和 200 才有可比性。
面对一个带筛选、排序、分页、追踪参数的页面,参数并不是同一种东西。把它们分成三类,定义会清晰很多:
死链检查工具本身不替你完成这个分类,它只会照着链接和规则去请求。所以分类必须在配置检查范围之前完成,否则工具会把三类地址混在一份报告里,你无法判断某个 404 到底意味着内容缺失还是参数无意义。
一个常见的反直觉结果是:同一个路径,去掉某个参数后返回 200,保留参数却返回 404。这不必然说明站点有死链,也可能是参数组合本身从未被设计为有效地址。要区分这两种解释,可以按下面顺序取证据:
如果带参数版本从未被站内引用、且服务端对任意未知参数都返回 404,那么这更可能是“参数空间未定义边界”,而不是内容死链。此时正确的动作是收紧死链检查工具的检查范围,把这类模式排除,而不是逐条修复 404。
定义有效地址集合,实际操作是写出一份模式清单,交给死链检查工具或抓取规则使用。清单可以这样组织:
/category/*?page=N,其中 N 为有限范围内的整数。/category/*?sort=price。?utm_*、?sessionid=*、?ref=*。这份清单的作用是让工具的报告可解释。假设你设定只检查前 10 页分页,那么第 11 页之后的 404 就不会出现在报告里,你也不会误以为站点有大量死链。动作的结果直接影响下一步:报告变短、噪声下降,你才能把注意力放在真正被引用的地址上。
假设某分类页支持颜色、尺寸、排序、页码四个参数,每个参数有若干取值,组合数会迅速膨胀。如果不加限制,死链检查工具可能请求数万条地址,其中绝大多数从未被任何页面链接。此时可以这样定义有效集合:只保留“颜色 + 页码”组合,排除排序和追踪参数,并限定页码上限。按这个定义运行后,如果报告中的 404 集中在被站内链接引用的地址上,才说明存在需要处理的真实死链;如果 404 全部来自未被引用的参数组合,则说明问题出在集合定义,而不是站点内容。
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。因此,即使你把某些参数地址写进站点地图或允许抓取,也不能据此认定它们属于有效地址集合;有效集合的判断依据应来自内容差异、站内引用和服务端响应,而不是收录承诺。
当参数组合无限增长时,有效地址集合本质上是一个人为划定的边界,而不是一个能被工具自动发现的事实。先写清三类参数的归属,再用模式清单约束死链检查工具的请求范围,最后用站内引用和服务端响应交叉验证。这样得到的报告,才能让你判断下一步是修内容、改规则,还是继续缩小检查范围。