判断死链问题属于哪一层,最直接的办法是看“交付结果由谁决定”。如果结果取决于源站是否返回正确状态码,问题在服务器层;如果取决于页面是否被抓取,问题在爬虫可达层;如果取决于用户和搜索引擎是否还看得到旧地址,问题在URL与链接层。时间和人手有限时,先按这个顺序查:源站响应→抓取与robots→站内链接与跳转→索引与流量表现。前一层没确认,后一层往往白忙。
死链的第一层是源站对请求的响应。用命令行或浏览器开发者工具查看目标URL返回的HTTP状态码,这是最可核对的一步。常见判断如下:
404或410:页面已不存在。410语义更明确,但两者都表示内容不可用。301:永久跳转,通常适合把旧地址指向新地址;但跳转目标必须本身可访问。302或307:临时跳转,不适合长期替代永久迁移。200:页面能打开,但可能内容已换成无关页面,这属于“软404”判断,不只看状态码。如果源站返回404,问题已定位在内容或服务器配置层,不需要先怀疑搜索引擎。若返回301却仍被报告为死链,继续查跳转链是否过长、目标是否又返回404。适用条件是你能直接请求该URL;判断结果是“源站层已确认”或“源站层未确认”。
第二层是爬虫能否到达和抓取。robots.txt的抓取限制不等于可靠的索引移除:它只表达抓取偏好,不保证页面从索引消失,也不等同于删除内容。站点地图也不保证收录,它只是提交候选URL的方式之一。判断这一层时,检查:
如果源站返回正常,但抓取长期受阻,问题在抓取可达层,优先处理robots和站点地图,而不是反复改页面内容。不同搜索引擎对同一规则的支持与处理可能不同,须分别核查,不能用一个平台的结果推断全部。
第三层看“谁还在指向旧地址”。站内导航、文章正文、栏目页、历史专题页里的旧链接,都会把用户和爬虫带到死链。外链不受你直接控制,但可以通过跳转承接。判断步骤:
假设某旧产品页已下线,新页面为同类产品页,则把旧URL 301到新URL,并更新站内所有旧链接;若该产品线完全取消,没有合适替代页,则保留404比强行跳到首页更合适。这里判断结果是“链接层已定位”,处理对象是链接和跳转,不是服务器响应本身。
索引和流量是结果层,不是死链的根因层。搜索结果显示旧标题、点击后打不开、流量下降,这些现象可能来自源站404、抓取受阻、跳转配置错误或索引未更新,不能只凭一个现象断言唯一原因。核查时分开看:
如果源站、抓取、链接三层都已处理,表现层仍显示旧地址,通常需要等待重新抓取和索引更新,此时继续改源站不会更快。判断结果是“已进入表现观察期”,而不是“问题还没找到”。
先明确本轮交付结果:是让旧地址不再返回错误,还是让用户到达正确页面,还是清理站内无效引用。倒推所需资料和任务:
下一步可以直接做一件事:从待处理清单里挑出返回404且站内仍有引用的URL,先判断它有没有合适替代页。有替代页就配置301并替换站内链接;没有替代页就保留404或410,同时从站点地图和站内导航中移除。这样一轮下来,问题属于哪一层、先处理什么,都会落到可验收的结果上。