站点运营

站点运营:跳转链自查,别让多级 301 把抓取速度拖长

改版、换域名、栏目合并之后,页面上常留下多级跳转甚至循环跳转。本文介绍如何借助请求工具、访问日志和站内爬虫发现跳转链,怎样合并规则、让跳转一步到位,并说明参数保留、状态码选择与分页地址方面容易忽略的细节。

站点运营

站点运营:跳转链自查,别让多级 301 把抓取速度拖长

站点改版、栏目合并、URL 结构调整之后,页面上很容易留下一条一条的跳转。单次 301 本身没问题,问题是跳转叠了好几层,或者几条规则绕成环。对访问者来说只是多等一会,对蜘蛛来说,每多一跳就多一次请求,还可能在中途因为超时或规则冲突提前放弃。

跳转链是怎么长出来的

常见来源有这几个:

  • 栏目改名只改了新链接,旧链接又指到另一个旧链接;
  • http 到 https、带 www 到不带 www 各自有一条规则,先后叠加;
  • 页面迁移到新目录后,老地址先跳到中间页,再由中间页跳到最终地址;
  • 移动端与 PC 域名互跳,规则写反或多写一层;
  • 规则里同时存在通配与精确匹配,先命中的那条把请求带到了别处。

这些都不算严重故障,但会让抓取效率变低,也让日志里的状态码变得难以解读。

自查:先看清楚整条链路

用请求工具逐跳看

对重点地址用 curl 或类似工具加“不自动跟随跳转”的参数,观察 Location 头和状态码,一条一条跟下去,数清楚总共跳了几次。批量地址可以写个简单脚本,把结果汇总成表格。

看日志里的状态码分布

在访问日志中统计 301、302、307、308 的出现次数和来源地址,按路径前缀分组。如果某个前缀下大量请求都返回跳转响应,说明那里规则集中,值得优先处理。注意区分蜘蛛请求与真实用户请求。

用站内爬虫跑一遍

爬取工具通常会把跳转链列出来,标出超过两跳的地址。跑的时候把范围限制在自己站点,避免爬到外部域名上。

怎么改比较稳妥

  1. 先合并规则,再改目标。搞清楚每条规则的匹配顺序,避免新旧两条规则同时生效。
  2. 让跳转一步到位。旧地址直接指向最终地址,不要经过中间页。
  3. 协议与域名归一放在最前面。http→https、www 归一这类规则只保留一层,后面的路径规则基于最终形态来写。
  4. 检查是否有环。A 跳 B、B 又跳回 A,浏览器会直接报错,蜘蛛也拿不到内容。
  5. 保留必要的参数。带查询参数的旧地址如果直接跳到首页,参数里承载的信息就丢了,能带到最终地址的尽量保留。
  6. 改完更新站内链接。跳转只是兜底,导航、正文、站点地图里应该直接写最终地址。

几个容易忽略的点

跳转与状态码要一致

永久迁移用 301 或 308,临时调整用 302 或 307。混用会让搜索引擎和缓存各自判断,缓存时间长短不一,排查起来更乱。

分页与筛选地址

文章分页、列表筛选这类地址如果也套上跳转规则,容易越滚越多。这类地址建议单独梳理,能不加规则就不加。

子域与出站跳转

子域名之间的互跳,以及跳到第三方页面的情况,最好单独记一份,改版时一并检查,别等到用户反馈打不开才回头找。

维护节奏

不需要天天查。改版上线后、栏目调整后、换域名或换证书后各跑一次,平时按月看一遍日志里的跳转分布即可。把规则写在一处并注明日期与原因,下次调整时能省不少时间。

跳转是过渡手段,不是长期方案。能让地址直接可用,就别让它绕路。