列表页和分页是站点里最容易被忽略的一类页面。它们数量多、地址生成规则简单,一旦参数没管住,很容易在一次改版或一次筛选功能上线之后,悄悄多出成千上万个地址。这些地址里的内容往往高度重复,却同样会消耗蜘蛛的抓取额度。
先算清楚多出来的地址有多少
自查的第一步不是改代码,而是把数量摆出来。取一个内容较多的栏目,看看它现在能生成多少可访问地址:
- 基础分页:如果有 200 页内容,至少就是 200 个地址;
- 排序参数:按时间、按热度、按评论各一份,数量立刻翻几倍;
- 筛选参数:分类、标签、地区、价格区间任意组合,数量按乘法增长;
- 站内搜索页:每个搜索词一个地址,而且用户和外部链接都可能留下入口。
把这些加在一起,再和站点的实际内容量对比,就能判断抓取额度是不是被稀释了。
分页本身的自查要点
- 分页地址尽量使用固定路径形式,例如 /list/page/2/,而不是一串带 session、时间戳或追踪参数的地址。
- 每一页都要有可被直接访问的链接,不要只靠“点击加载更多”这类纯脚本交互来翻页。
- 分页页面的标题和描述可以带上页码做区分,但不必为每一页单独堆关键词。
- 最后一页之后不要返回 200 的空页面,空页应返回 404 或 410,或者干脆不生成链接。
- 一般只需要把列表首页提交到站点地图,后续分页靠页面上的链接被发现即可。
- 上一页、下一页用普通链接表达就够了,不必依赖早已不被主流搜索引擎使用的 rel=prev/next 标记。
站内搜索与筛选参数最容易失控
站内搜索结果页通常没有独立价值:它只是把已有内容重新排列一遍,而且地址会随着用户输入无限增长。比较稳妥的处理方式是给这类页面加上 noindex,同时在 robots.txt 中屏蔽搜索路径,避免蜘蛛把时间花在无意义的组合上。
筛选参数则要区别对待。真正有搜索需求、内容也足够丰富的筛选组合,可以保留并让它可被索引;纯粹为了切换视图、排序方式而存在的参数,最好统一收敛到主列表页,或者用 canonical 指向不带参数的地址。
判断标准很简单:这个地址如果被用户直接打开,看到的内容和主列表页有多大差别?差别很小,就没有必要让它单独存在。
列表页的内容质量同样要过关
分页数量合理,并不代表列表页就有价值。可以检查几点:
- 列表是否至少展示了标题、摘要、时间等基础信息,而不是只有缩略图和按钮;
- 翻到很深的分页时,是否仍然是有效内容,而不是空壳;
- 栏目内容不足时,是否过早地暴露了大量空分页;
- 列表页是否有清晰入口,以及回到上一级的路径。
最后用日志验证
调整之后,隔一段时间回看服务器日志:蜘蛛访问分页和参数地址的比例是否下降,核心内容页的抓取次数是否上升。如果没有明显变化,可以再检查是不是还有其它入口在持续暴露这些地址,例如旧版页面、RSS 输出、站内推荐模块或外部链接。
分页和列表页管理的目标不是把所有地址都砍掉,而是让每一类地址都有明确的存在理由。