先给结论:不要急着把这条URL判为死链或正常页,而要先做“同请求条件复现”。把设备、登录状态、Cookie、User-Agent、语言和来源路径固定成几组可对照的请求,分别记录状态码、最终跳转地址和正文中的关键标识;只有同一组条件下反复得到同一结果,才把它当作后续处理依据。若不同组之间结果不同,处理对象就不是一条死链,而是一组需要分别标注的访问条件。
你手里通常只有一条URL和几次互相矛盾的观察:手机打开是404,桌面浏览器打开是正常页;退出登录看到跳转,登录后看到内容。此时先列一张条件表,每一行只改变一个变量,其余保持不变。建议至少覆盖:桌面与移动User-Agent、登录与未登录、带与不带站点Cookie、直接访问与从站内链接进入。每组记录四项:HTTP状态码、最终URL、页面标题或主标题、正文中一个稳定且唯一的标识词。
这里的“稳定标识词”不能选广告位、推荐模块或时间戳,否则会把动态内容误判为差异。若页面正文由接口异步填充,还要记录首次HTML响应里是否已经包含该标识;这决定了后续是处理服务端路由,还是处理前端渲染后的可见内容。
面对同址不同结果,常见取舍是:按条件分组处理,或按最差结果统一处理。两者都合理,但代价不同。
判断依据不是“哪种更彻底”,而是差异是否可枚举、是否稳定复现。若同一组条件今天404、明天200,先不要进入修复,而要继续记录,因为不稳定的结果无法作为对照基线。
对照记录出来后,按下面顺序判断,每一步都对应一个实际动作和下一步影响。
假设某商品页在桌面未登录时返回200并显示“已下架”,移动未登录时返回302到分类页,登录后两组都返回200并显示正常购买按钮。这里不能简单判为死链:它更像按登录状态和设备分流的条件页。
若业务目标是让未登录用户也能看到下架说明,那么移动未登录组的302就是需要修复的对象,桌面组可作为对照基线。若业务目标是只允许登录用户看到商品,那么未登录组的差异属于预期行为,处理重点转为确认跳转目标是否相关、是否返回合适状态。两种决定对应不同的验证清单:前者要回归移动未登录入口,后者要回归登录后各设备是否都能到达同一内容。
这个例子里的数字和状态只是假设,用来展示比较方法,不代表任何真实站点结果。
第一,robots.txt限制抓取不等于可靠的索引移除;看到某组请求被限制,不能直接推断该URL已从索引消失。第二,站点地图不保证收录,把URL放进地图不能替代对返回内容的核对。第三,HTTPS不保证页面安全无漏洞,也不保证排名,协议正常与死链判断是两件事。第四,请求量、抓取量或某个统计归零,不能单独证明处理正确;缓存、监控口径变化、访问入口调整都可能有同样表现。第五,不同搜索引擎对状态码、跳转和渲染内容的支持情况须分别核查,不要用一套结论覆盖所有来源。
完成对照后,把每条URL标注为“稳定正常”“稳定异常”“条件差异待定”三类,再决定是修复、保留观察还是替换入口。只有稳定异常才进入删除或替换流程;条件差异待定的URL继续保留记录,等下一轮同条件复测后再定。