结论是:只有当“被发现”的差异能追溯到重定向规则本身的差异时,把已发现和未发现页面分成两组才有诊断价值;如果差异来自链接、站点地图或抓取预算等外部因素,这种分组会误导你。可行的做法是先按重定向类型分组,再在每组内部比较,而不是直接按“发现/未发现”一刀切。
批量做301重定向设置时,常见情形是:一批旧URL通过规则统一指向新URL,但只有一部分新URL进入了后续处理流程。此时要先区分两种情况:
只有第一种情况才适合做“已发现 vs 未发现”的对照。第二种情况下,两组页面从一开始就不在同一个处理路径上,比较结果没有意义。判断方法很简单:抽几条未发现页面的旧URL,直接在命令行看响应头,确认返回的是否是同一个状态码和目标地址。如果状态码或目标不一致,先修规则,不要急着分组。
假设你有 400 个旧URL做了301重定向设置,其中 120 个新URL被发现,280 个没有。直接比较这两组,你会得到“被发现页面更短”“被发现页面层级更浅”之类的结论,但这些结论可能只是因为被发现的页面恰好来自某个子目录。
更稳的分层方式是:
这样做的结果是:如果某一组里两类页面表现一致,说明重定向设置不是差异来源;如果某一组里未发现页面明显集中在某个规则分支,下一步就该去查那条规则的输出,而不是继续扩大抽样。
假设你发现“未发现页面全部来自手动逐条设置的重定向”,于是判断手动规则有问题。但如果这些手动规则对应的旧URL本来就没有任何内链,而整站规则覆盖的页面恰好都在导航里,那么差异来源是链接而不是重定向。此时按重定向类型分组仍然会得出错误结论。
反例的边界在于:对照组必须共享同一套外部可见条件。如果两组页面在链接、站点地图收录、历史抓取频率上明显不同,就不能把发现差异归因于301重定向设置。站点地图不保证收录,robots.txt 的抓取限制也不等于可靠的索引移除,这些因素都会独立影响“被发现”的结果。
如果分层后仍找不到稳定差异,建议先做一个注明假设的短例子:从同一重定向规则下各选 10 条已发现和 10 条未发现的新URL,只检查两件事——旧URL的响应状态码是否一致、新URL是否在站点地图中列出。如果状态码一致但站点地图覆盖不同,下一步应调整站点地图或内链,而不是改重定向规则。
这个动作的结果会直接决定后续方向:状态码不一致就先修规则,状态码一致但链接覆盖不同就先补链接,两者都一致再考虑抓取层面的其他解释。不要因为某一批页面没有被发现就断定301重定向设置失败,也不要因为部分页面被发现就认为整批规则已经生效。