蜘蛛池跑一段时间之后,入口页的状态会慢慢出现分化:有的页面还在被蜘蛛反复抓,有的已经彻底没人来了,还有一部分页面虽然返回 200,但内容早就空了或者跳到了别处。这部分「失效入口页」如果一直挂在池子里,既占着资源,也会让蜘蛛白跑。下面说说怎么识别和处理。
三种「找不到」不是一回事
先区分清楚:
- 404:服务器明确告诉蜘蛛这个地址没有对应内容。入口页被删除、域名解析正常但文件没了,通常返回 404。
- 410:语义更明确,表示「曾经有、现在永久不再有」。对搜索引擎来说,410 的删除信号比 404 更干脆。
- 软 404:最容易被忽略的一种。HTTP 状态码是 200,但页面内容是空的、提示「内容不存在」,或者只剩一个模板框架。蜘蛛拿到的状态码正常,实际拿不到有价值的东西。
前两种至少状态码是诚实的,第三种才是真正麻烦的——它不会在状态码统计里暴露出来。
失效入口页对池子的实际影响
入口页的作用是把蜘蛛引到目标页。一个失效入口页造成的影响大致有三层:
- 蜘蛛按计划来了,抓到的是空页面,这次抓取基本浪费。抓取预算是有限的,浪费在这里就少了别处。
- 如果入口页上原本挂着指向目标页的链接,页面失效意味着这条通路断了。
- 大面积失效会让蜘蛛对整站的抓取频率下调,恢复起来需要时间。
不必把单个失效页看得太重,但如果失效比例持续上升,池子的整体效率会明显变差。
怎么发现失效入口页
- 服务器日志里筛状态码。404 和 410 的访问记录可以直接查到,注意区分蜘蛛 UA 的请求和其他请求。
- 软 404 靠状态码看不出来,得看入口页的实际可用性:页面正文长度、是否还包含指向目标页的链接、有没有被替换成占位内容。
- 定期抽样访问入口页列表,尤其是那些长时间没有蜘蛛访问记录的页面。
处理方式
发现之后别一刀切,按情况分开处理:
- 页面确定不再使用、域名还保留的,直接返回 410 或 404,不要用 200 返回一个空页面假装还在。
- 内容搬到了新地址的,用 301 指向新入口页,让蜘蛛顺着走。
- 只是暂时性故障(服务器重启、文件被误删)的,尽快恢复原状,恢复之前别急着改状态码。
- 入口页上的目标链接失效的,要么换链接,要么把这个入口页一起下掉,别留一个空壳。
几个容易养成坏习惯的地方
- 用 200 返回「该内容已删除」的提示页。这是典型的软 404,比直接 404 更糟。
- 入口页 301 到一个和目标页毫无关系的地址,蜘蛛跟过去发现是另一回事,等于白跑。
- 发现失效就立刻大批量删除入口页,蜘蛛短时间内集中遇到大量 404,容易把整个站的抓取节奏打乱。
- 只清页面不清链接,别的入口页里还挂着指向已删除页面的链接。
失效入口页不用天天清,但要定期看。状态码诚实、链接有去处、批量操作分批做,这三点比追求「零 404」更实际。