网站死链检测 - 怎样判断问题属于哪一层

📍 WDQWDWQD987AAAAA:216.73.216.157
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /dec4fe31d17b.html
📄

网站死链检测 - 怎样判断问题属于哪一层

判断网站死链检测中的问题属于哪一层,核心是看“错误发生在哪一次请求、由谁给出响应”。如果浏览器或爬虫请求一个URL后得到404/410,问题在页面链接层;如果返回301/302但最终落到404,问题在跳转链层;如果服务器直接返回5xx或连接超时,问题在服务端与网络层;如果返回200但内容为空或提示不存在,问题在内容与模板层。先记录状态码、最终URL、响应时间和请求方式,再按这四层归类,不要一看到“打不开”就统一当成死链。

先收集能分层的最小证据

用浏览器开发者工具的Network面板或命令行工具请求目标URL,至少记录四项:HTTP状态码、最终跳转到的URL、响应头中的Location、请求耗时。例如用curl -I -L https://example.com/old-page可以看到每一跳的状态码和Location。假设某链接返回301,Location指向一个已经下线的页面,最终是404,那么问题不在原始链接写错,而在跳转目标失效,属于跳转链层。这里的状态码是判断分层的第一依据。

按状态码和最终URL划分四层

同一现象可能有多个解释。比如“页面打不开”既可能是404,也可能是5xx或DNS失败,必须看实际请求结果,不能凭感觉归类。若使用站点地图或站内爬虫工具,它们报告的是抓取结果,仍要回到原始请求证据确认层级。

用robots.txt和站点地图排除干扰项

robots.txt限制抓取,不等于页面被移除索引;站点地图列出URL,也不保证被收录。做死链检测时,如果某URL在robots.txt中被Disallow,爬虫可能不请求它,但这不代表它一定返回404。要判断真实状态,应单独请求该URL并查看状态码。若站点地图中包含大量404,说明站点地图生成逻辑或内容下线流程有问题,属于跳转链层或内容管理层,而不是简单的链接写错。

按层处理并复查

页面链接层:找到链接所在模板或正文,改成有效URL或移除链接。跳转链层:检查重定向规则,确保每一跳都指向200页面,避免链式跳转和循环。服务端与网络层:先确认是全局故障还是单URL问题,再检查源站、CDN和证书。内容与模板层:检查数据源、模板条件和发布状态,确认返回200是否真的代表内容可用。处理后再用同一工具复查状态码和最终URL,确认目标层的问题消失,而不是只把404换成了另一个错误。

下一步:选一个已知有问题的URL,用curl -I -L记录完整跳转链和最终状态码,再对照上面的四层归类,确定先改链接、改重定向、查服务端还是查模板。

图1 图2

nginx