有些站点内容不差,sitemap 也提交了,但内页收录始终跟不上。排查一圈后发现,问题不在内容,而在站内链接本身:大量链接指向的不是最终地址,而是先经过一次或多次跳转。对用户来说只是慢一点,对搜索引擎来说,则意味着它发现的 URL 和你想让它收录的 URL 并不是同一个。
跳转链接为什么会拖累收录
搜索引擎的抓取预算有限。当它沿着一条链接爬过去,先抓到一个 301 或 302 地址,再跟到目标页,这个过程会消耗额外的抓取次数。如果站内大量链接都这么走,预算就浪费在中转上,真正需要被抓的页面反而排不上队。更麻烦的是,蜘蛛可能把中转地址也当作一个独立 URL 记录在发现列表里,形成“一个页面多个候选地址”的局面,索引归属容易分散。
需要说明的是,跳转本身不是错误。问题出在本可以直接指向最终地址的地方,却绕了一道。
先分清站内常见的三类跳转
1. 协议与主机名跳转
比如页面里写的是 http:// 开头的链接,服务器统一 301 到 https://;或者内链写的是不带 www 的域名,实际跳转到带 www 的版本。这类跳转量大、集中在全站导航和页脚,最容易被忽略。
2. 路径规范化跳转
末尾斜杠的有无、路径大小写、连续斜杠、带不带 index.html,服务器把非规范版本 301 到规范版本。内链如果混用了多种写法,蜘蛛就会反复走跳转。
3. 业务与统计跳转
常见的 /go/、/out/、短链服务、带 utm 参数的中转页,以及广告位、合作方互换的链接。这类地址往往不返回 301,而是 302 甚至 JS 跳转,指向的最终页面很难被稳定发现。
核对顺序
- 看抓取日志里蜘蛛实际访问的 URL 形态。重点看两件事:中转地址的访问量占比,以及目标页是否有一条“直达”的抓取记录。如果某个页面几乎只通过跳转被发现,说明它缺少直接的入口。
- 在页面源码里搜关键词。搜索 http://、“go/”、“redirect”、“target=” 等字样,定位出哪些模板产生了跳转链接。通常集中在导航、面包屑、相关推荐、列表页的标题链接上。
- 区分 301 与 302。永久跳转能把信号合并到目标地址,临时跳转只是“这次去那边”。如果站内的固定链接用了 302,等于每次都在重新指路。
- 检查是否存在跳转链。A 跳到 B,B 又跳到 C,链路越长,抓取损耗越大,也越容易被中途放弃。
- 核对 sitemap 和 canonical 用的是哪个版本。这两处应该统一指向最终地址,而不是中转地址或非规范版本。三者不一致时,索引归属就会摇摆。
- 确认跳转目标是否可抓。有些中转地址带 nofollow 或 robots 屏蔽,或者目标页本身被 robots.txt 挡住,那就不是跳转的问题,而是目标根本没放行。
修正时的几点注意
- 把内链直接改成最终地址,是最省事的做法。导航、面包屑、列表页标题链接优先处理。
- 已经存在的中转地址不要直接删掉,保留跳转并确认状态码正确,避免产生大量 404。
- 统计跳转如果必须保留,可以给链接加上 nofollow,减少蜘蛛在中转上的消耗。
- 改完后观察一段时间日志,看最终地址的直接抓取是否变多,再判断是否还有别的问题。
跳转不会直接导致页面不收录,但它会让“发现”这一步变得低效。收录的前提是稳定发现,先把路径理顺,再谈内容质量。
最后提醒一句:这类问题往往只影响一部分模板,不必全站大改。先从抓取日志里找出跳转集中的那几个入口,改完再看数据变化,比一次性推翻链接结构要稳妥得多。