站点做大了以后,经常出现一种情况:URL 数量在涨,索引量却停在原地,甚至慢慢往下走。原因通常不是蜘蛛不来,而是站点自己没有把地址分清楚——哪些地址是希望被搜索到的,哪些只需要被爬到、用来支撑导航和抓取链路就够了。
索引位置是有限资源,不是越多越好
索引里的每一个 URL,都意味着一份被评估过的内容。搜索引擎愿意为它保留位置,前提是这个地址在被检索到的时候,有独立且稳定的价值。把大量低价值地址推进索引,并不会让整体表现变好,反而会让站点内部各层级之间的差异变得模糊,也让真正重要的页面更难被识别出来。
所以更实际的做法不是问“怎么让更多页面被收录”,而是先问“这个地址被搜到的时候,用户是否希望直接落到这里”。
把站内地址分成三类看
需要进索引的页面
- 详情页、文章页、产品页:有独立内容主体,能对应一个具体需求;
- 栏目页、专题页:承担主题聚合,本身有稳定的内容列表;
- 必要的说明类页面:关于我们、联系方式、售后政策等,内容稳定且可能被搜到。
只需要被爬到的页面
- 分页、筛选、排序参数页:内容由列表派生,组合数量容易失控;
- 站内搜索结果页:内容随查询变化,不具备稳定主体;
- 登录、注册、购物车、结算等流程页:访问路径有前置条件;
- 用户中心、草稿、预览地址:只对特定人有意义。
这类地址不是要彻底封死,而是让它们可以被爬到、可以传递链接,但不进入索引。
边界模糊的页面
标签页、多语言版本、多地区版本、弱聚合页通常属于这一类。判断方式很简单:把这个页面的主体内容单独拿出来,它是否还能回答一个具体问题,并且和已有页面有明显区别。如果答案是否定的,它更适合作为抓取入口存在,而不是索引对象。
noindex、robots.txt 与 canonical 各管一段
这三个工具经常被混着用,但它们解决的问题并不相同:
- noindex:页面被抓取之后,不进入索引;
- robots.txt:阻止抓取,但被外链指向的 URL 仍可能出现在索引里,只是没有内容;
- canonical:同一份内容存在多个地址时,指向希望被保留的那一个。
需要注意的是:如果某个 URL 被 robots.txt 禁止抓取,页面里写的 noindex 也就不会被读到。想让它退出索引,通常要先允许抓取、再让标签生效。
站内链接决定实际优先级
蜘蛛主要依靠链接来分配抓取注意力。一个入口放在首页或栏目首屏的页面,和埋在三四层之后的页面,被处理的频率往往不同。对不打算收录的地址,把它从导航、面包屑、正文推荐位里撤下来,效果通常比只加一个 noindex 更直接。
反过来,如果某个页面确实重要却迟迟没动静,先检查它有几个站内入口、入口在什么位置,比反复提交地址更有意义。
一套可以定期执行的检查
- 按模板把站内 URL 分组:详情页、列表页、标签页、参数页、功能页;
- 从抓取日志里统计每一组的抓取量,看占全部抓取的比例;
- 对照索引状态,找出索引比例明显偏低的分组;
- 区分两种情况:本来就不该被索引,还是应该被索引却没进去;
- 前者做收敛(内链、标签、参数处理),后者回头看内容主体和站内入口。
收录这件事,最终要落到“让该被搜到的地址被搜到”。先把地址类型分清,再谈数量,排查起来会清晰很多。