入口页的任务是把蜘蛛引到池内更多 URL,但很多人的关注点停在“蜘蛛来没来”,很少检查“蜘蛛来了之后服务器回了什么”。状态码是蜘蛛判断一个地址要不要继续访问、要不要降低抓取频率的直接依据,这里配错,前面铺的入口页基本白做。
下面聊的是入口页和池内页面返回不同状态码时,蜘蛛常见的行为差异。不同搜索引擎的策略并不一致,具体表现请以自己站点的访问日志为准,不要照搬结论。
4xx 家族:含义不同,别混着用
404 与 410
404 表示“暂时找不到”,410 表示“已经永久删除”。两者都会让蜘蛛把这个 URL 从待抓队列里剔除,但 410 的信号更明确,后续回访的间隔通常更长。入口页如果因为参数拼装、目录改名导致大批 URL 失效,返回 404 是正常做法,不必强行 301 跳到一个内容无关的页面。
需要避免的是软 404:HTTP 状态返回 200,页面内容却是“该页面不存在”或者一片空白。蜘蛛拿到 200 会当成正常页面继续抓、继续进入后续流程,结果是大量无效地址占掉抓取预算。
403 与 429
403 是明确拒绝,蜘蛛通常会停止对该路径的抓取。如果入口页整站返回 403,常见原因是 WAF 误拦、UA 黑名单配错,URL 发现链路会直接断掉。429 表示“请求太多”,蜘蛛一般会降低频率、稍后再来,短期看比 403 温和;但如果长期返回 429,抓取量同样会明显下滑。
5xx 与超时:蜘蛛会退让,但账都记着
500、502、503 属于服务器端错误。蜘蛛遇到这类响应,一般判定为临时故障,过一段时间重试,同时降低对该站点的整体抓取频率。偶发几次问题不大,但如果蜘蛛来访的时间段里入口页持续返回 5xx,或者响应迟迟不返回导致超时,抓取量掉得会比想象中快,恢复也需要时间。
这里有个常见误区:把 503 当成“维护中,蜘蛛不会记仇”的万能挡箭牌。短时间用没问题,长时间挂着 503,效果和关站差不多。
入口页最容易踩的几种配置错误
- WAF 一刀切:把所有非浏览器 UA 都拦掉,蜘蛛也一起挡在门外。
- 错误页返回 200:空壳页、报错页都用 200 输出,蜘蛛反复抓无效地址。
- 入口页强依赖后端接口:接口一挂,整页 5xx,蜘蛛抓一半就退。
- 泛目录不加限制:任意参数都返回 200,蜘蛛顺着参数组合无限抓。
- 协议与域名混用:HTTP 与 HTTPS、带 www 与不带 www 同时可访问,同一批内容出现多个入口,状态码还各不相同。
排查顺序:从日志到状态码
- 先在访问日志里筛出蜘蛛 UA 的请求,统计状态码分布,看 2xx 占比是否正常。
- 重点看出现频率高的 4xx 与 5xx,判断是配置问题还是偶发波动。
- 用 curl 带上蜘蛛 UA 直接请求入口页,确认返回码和内容与预期一致。
- 检查 WAF、CDN、反向代理的拦截规则,确认没有把正常蜘蛛一起拦掉。
- 改动之后观察一到两周的日志趋势,不要当天改当天就下结论。
状态码只解决“蜘蛛能不能顺利拿到页面”,不解决页面质量、收录与排名。入口页返回 200 是入场券,不是结果。
使用建议
入口页和池内页面的状态码应当保持一致:该 404 的就 404,该 410 的就 410,不要为了“看起来正常”一律返回 200。抓取压力大时,用合理的响应速度配合 429 或 503 控制节奏,比直接 403 拦死更稳妥。定期翻日志,比反复猜蜘蛛的偏好更有用。