先给一个有条件成立的结论:当死链检查只能覆盖一部分批量页面时,可以把已发现页面按“是否出现在站点地图”“是否被内部链接指向”“是否在日志中有抓取记录”拆成两组,用未进入发现范围的那组做对照,判断漏检更可能来自抓取限制、链接结构还是页面本身。这个划分只在两组页面来自同一模板、同一目录层级、同一发布批次时成立。
死链检查里“被发现”至少有三层含义:链接被工具抓到、页面被搜索引擎抓取、页面进入索引。三者不能互相替代。工具抓到了某条链接,不等于搜索引擎抓过;日志里有抓取记录,不等于页面已收录;站点地图里写了 URL,也不保证会被收录。划分对照组前,先固定一层作为判定基准,否则两组会混在一起,结论无法解释。
如果缺少日志和索引数据,只能做最小动作:用站内搜索、栏目列表和站点地图分别导出 URL,取交集与差集。差集里的页面就是“未被发现组”的候选。这个动作能回答“哪些页面没有出现在某个入口”,不能回答“搜索引擎是否认为它们是死链”。
下面几个维度可以单独或组合使用,但每组都要满足同模板、同层级的前提。
把“未被发现组”和“已发现组”按同一维度配对,比较两组的返回状态、响应时间和链接指向。若两组状态码分布接近,漏检更可能出在发现路径;若未发现组集中出现 404 或 5xx,问题更可能在页面或发布环节。
假设某批页面只有一部分被发现,你按“是否在站点地图中”分组,发现未进站点地图的那组 404 更多,于是判断站点地图缺失导致死链未被发现。这个结论可能不成立:如果这批 404 页面本来就在发布时被删除,那么无论是否写入站点地图,它们都不会被抓到。此时站点地图只是结果,不是原因。
反过来也一样:如果未发现组全部返回 200,也不能直接推出“页面正常,只是没被发现”。robots.txt 的抓取限制不等于可靠的索引移除,页面可能被允许抓取却因其他原因未进入索引;站点地图不保证收录,写了 URL 也可能长期不被处理。缺少索引数据时,只能把“未出现在某入口”当作现象,不能当作死链已确认。
取 20 个已发现页面和 20 个未发现页面,来自同一模板、同一目录层级。对两组分别记录:HTTP 状态码、是否被内部链接指向、是否在站点地图中。假设结果是未发现组中有 15 个缺少内部链接,已发现组中只有 3 个缺少内部链接。这个差异提示内部链接结构可能是主要变量,但仍需检查两组是否同批次发布。
下一步动作:给未发现组补上内部链接入口,保持其他条件不变,过一段时间再检查这批页面是否进入发现范围。如果补链接后仍未进入,说明瓶颈不在内部链接,应转向抓取限制、页面状态或索引层排查。这个动作的结果决定下一步往哪查,而不是直接证明补链接就能解决死链检查漏检。
没有日志和索引权限时,仍可执行的最小动作是:导出站点地图 URL、导出站内搜索或栏目列表 URL、用工具批量请求两组 URL 并记录状态码。这样能得到“哪些 URL 在某个入口缺失”和“这些 URL 当前返回什么状态”。
不能由此推出:这些页面一定被搜索引擎视为死链、一定不会被收录、补上入口后一定会被发现。请求量或抓取量归零也不能单独证明处理正确,因为归零还可能来自工具配置错误、请求被拦截、页面被合并或统计口径变化。把这些现象和分组差异放在一起看,才能缩小排查范围。