站点运行时间一长,失效 URL 就会慢慢堆积:改版删掉的栏目、下架的商品、早期拼错的参数链接,还有被外部站点引用但早已不存在的页面。蜘蛛迟早会撞上这些地址,而站点如何回应,会影响它后续在你站内分配抓取资源的方式。
404、410 和软 404 的差别
三者的共同点是“这里没有内容”,但对蜘蛛传达的信号强度并不相同。
- 404:通用地表示页面不存在。蜘蛛收到后会逐步把该 URL 从待抓队列里清理,但因为 404 也可能是临时状态(比如程序异常),它不会立刻彻底放弃。
- 410:明确表示“永久移除”。信号更干脆,通常比 404 更快让蜘蛛停止回访,适合确认再也不会恢复的 URL。
- 软 404:服务器返回 200,页面却是“内容不存在”“已下架”这类空壳。蜘蛛要先把 HTML 抓下来才能判断,等于白花一次抓取成本,还容易让大量空页面进入索引。
如果 URL 确实永久废弃,410 更省事;如果只是暂时不可访问,让它正常返回 404 并保留恢复的可能即可。真正要避免的,是软 404 长期存在。
软 404 常见的几种长相
- 商品下架后仍返回列表页或推荐页,状态码是 200,正文却换成了别的内容;
- 站内搜索无结果页返回 200,页面结构完整,但只有一句“没有找到相关内容”;
- 程序出错时返回 200,正文是一片空白或默认模板;
- 需要登录才能看的内容,对未登录的蜘蛛返回 200 的登录提示页。
这几种情况在用户侧看起来“没报错”,对抓取来说却属于典型浪费。排查时可以拿几个已知失效的 URL,用开发者工具或抓取调试工具核对状态码与正文内容是否一致。
清理失效 URL 的常规流程
- 收集:从服务器日志里筛出蜘蛛访问后返回 404、410 的 URL,按访问频次排序。频次高的,往往是外链或站内链还在指向它。
- 分类:区分“永久废弃”“暂时下线”“应重定向到新地址”三类,处理方式不同。
- 处理站内链:把指向失效 URL 的内链改成有效地址或直接删除。只改状态码而不动内链,蜘蛛下次仍会顺着链接撞进来。
- 确认返回码:永久废弃的给 410,暂时下线的给 404,需要承接的用 301 指向最相关的新页面。
- 观察复访:处理完一到两周后回看日志,确认这些 URL 的抓取次数在下降,而不是被反复访问。
死链要不要做跳转
301 能承接一部分权重,也会让蜘蛛多走一跳。判断标准是内容有没有对应的替代页:
- 旧商品被新款替代——跳到新款详情页,用户和蜘蛛都能找到想要的东西;
- 栏目整体下线,没有对应页面——跳到上级栏目,通常比跳到首页更贴切;
- 完全不相关或已无替代——直接 410,比强行跳到首页更清爽。
把大量失效 URL 统一 301 到首页,看起来“没有死链”,实际上等于给蜘蛛制造了一批指向同一地址的重复入口,跳转链和锚文本都会变得没有意义。
收敛之后看什么
清理不是一次性工作。内容下架、活动结束、临时页面过期,都会不断产生新的失效 URL。比较稳妥的做法,是把状态码规范和站内链检查放进日常流程:新页面发布前确认链接有效,下架内容时同步决定它是 404、410 还是 301。这样蜘蛛每次来,走的路径都尽量是有内容的页面,抓取效率也会更稳一些。