死链查询中识别配置互相冲突,关键是看同一批 URL 在不同配置来源里是否得到相反结论。最常见的是 robots.txt 禁止抓取、页面 canonical 指向别处、站点地图又把它列为可收录地址,三者同时存在时,这条 URL 就处于冲突状态。判断起点不是先改配置,而是先把每条 URL 的“抓取许可、索引信号、内部链接、站点地图声明”四项记录并列,找出彼此矛盾的项。
死链查询不只是看 HTTP 状态码。一条 URL 是否被当作死链处理,会同时受多层配置影响。开始前先列出你站内实际存在的配置来源:
<meta name="robots"> 或 HTTP 头中的 X-Robots-Tag。<link rel="canonical"> 指向的地址。准备阶段只做一件事:为每条待查 URL 建一行记录,把上述字段填进去。不要在这一步就下结论,因为冲突往往出现在“状态码正常但 canonical 指向 404 页”这类组合里。
第一组对比是抓取许可与索引信号。robots.txt 写 Disallow,页面却写 index,follow,这就是冲突。需要说明的是,robots.txt 的抓取限制不等于可靠的索引移除,它只阻止抓取,不保证页面一定从索引中消失。反过来,页面允许索引但 robots.txt 禁止抓取,搜索引擎可能无法读取 canonical 或 noindex,导致判断失效。
第二组对比是 canonical 与状态码。若 A 页返回 200,canonical 却指向一个返回 404 的 B 页,A 的索引信号会被引向死链,这是典型冲突。若 A 页返回 301 指向 B,B 又 canonical 回 A,则形成循环,抓取工具会反复在两页之间跳转。
第三组对比是站点地图与内部链接。站点地图声明某 URL 可收录,但站内所有链接都已移除,且该 URL 返回 404,说明站点地图未同步。站点地图不保证收录,它只是声明,冲突在于声明与实际情况不一致。
最关键的一步是给每条 URL 标注“期望状态”和“实际状态”。例如期望是 301 到新页,实际却是 404;期望是 noindex,实际却是 index。只有把期望写下来,冲突才会从模糊感觉变成可核对清单。
验证时不要只看一个工具的结果。可以按以下顺序执行:
curl -I 查看响应头。判断结果时区分“可能原因”与“已经定位的原因”。例如某 URL 返回 404,可能原因包括文件被删除、重写规则错误、大小写不一致;只有当你逐项排除后,才能说已经定位。若状态码是 200 但内容为空,也不等于正常,需要结合 canonical 和 noindex 判断它是否被有意保留。
配置冲突会随改版、迁移、批量替换重新出现。维护阶段建议固定三项动作:发布前检查新增 URL 是否同时进入站点地图与内部链接;删除页面时同步更新 robots.txt、canonical 和站点地图;定期抽样对比“站点地图列表”与“实际返回 200 的列表”。
如果站点使用 HTTPS,也不要因为协议是 HTTPS 就认为配置无冲突。HTTPS 不保证安全无漏洞或排名,它只说明传输层加密,与死链和索引冲突是不同层面的问题。不同搜索引擎对 robots.txt、canonical、noindex 的支持细节须分别核查,不能用一个平台的结果直接推断另一个平台。
下一步:从你最近一次改版或迁移涉及的 URL 中,挑出 20 条,按“抓取许可、状态码、canonical、站点地图、内部链接”五列填表,先找出同一行里互相矛盾的项,再决定改哪一项配置。