判断死链检测问题属于哪一层,核心方法是先确认“坏的是哪一个环节”:是链接地址本身写错,是页面被删除或改址,是服务器返回了错误状态,还是抓取工具根本没访问到。把现象按链接层、页面层、服务端层、抓取层分开验证,就能确定起点和下一步。
这一层要查的是链接的完整URL,包括协议、域名、路径、参数和大小写。做法很简单:把待检测链接复制到浏览器地址栏直接访问,同时用命令行工具查看响应状态。
curl -I "完整URL" 查看返回的第一行状态码和Location头。适用条件是你能拿到原始链接文本。判断依据是同一URL在浏览器和命令行中结果是否一致。若两者都失败,继续往下一层查。
链接正确不代表目标页面存在。这一层要确认目标页面当前返回什么状态码,以及是否发生了跳转。
curl -I 观察状态码;若出现3xx,继续跟踪跳转链,确认最终落点。这里要区分“可能原因”和“已经定位的原因”。返回404只能说明该地址当前无内容,不能直接断定是内容被删、路由配置错误还是服务器重写规则导致,需要结合站点配置进一步确认。
如果链接和页面逻辑都正常,但访问仍失败,问题可能在服务端或网络层。
nslookup 域名、curl -v "URL" 查看连接过程;5xx通常指向服务端处理异常。注意,HTTPS只能说明传输层启用了加密,并不保证页面一定可访问,也不保证站点没有安全漏洞。遇到证书错误时,应先确认证书是否过期或域名是否匹配,再判断是否影响检测结果。
有时链接本身完全正常,但检测工具仍报告死链,原因是抓取过程被限制或未覆盖。
/robots.txt 查看对应User-agent的Disallow规则;用关闭JavaScript的方式访问页面,看链接是否仍出现在HTML中。另外,站点地图存在某条URL,并不保证它会被收录;站点地图只是提交候选地址的一种方式。检测时不要把“已提交”误判为“已可访问”。
curl -I 查看状态码,记录是2xx、3xx、4xx还是5xx。每一步只回答一个问题:这一层是否正常。哪一层先出现异常,问题就归到哪一层,后续排查从该层继续。不同搜索引擎和检测工具的支持情况需要分别核查,不能用一个工具的结果直接推断所有环境。
下一步建议:挑一条你手头报错的具体链接,按上面六步依次执行,把每步的状态码和现象记下来,再对照异常出现的那一层去修复。