同一段内容,从不同入口点进去,可能得到几个看起来不一样、实际指向同一页面的 URL。对用户来说页面没变;对爬虫来说,这是几个彼此独立的地址,会被分别抓取、分别评估。结果就是抓取额度被摊薄,索引里多出几条内容几乎一样的记录,外链带来的信号也被拆散。
常见的 URL 变体有哪些
- 协议与主机:http 与 https、带 www 与不带 www、显式写出默认端口(:80、:443)。
- 大小写:/About 与 /about 在多数服务器上是两个不同路径,除非服务器做了统一处理。
- 末尾斜杠:/tag 与 /tag/ 在部分服务器配置下会返回两份内容。
- 默认文件名:/index.html、/default.aspx、/home 与目录根地址并存。
- 查询参数:utm_* 跟踪参数、排序、筛选、分页、会话 ID,以及参数顺序不同。
- 编码写法:同一路径用不同转义方式表达,中文路径尤其容易出现。
锚点(# 之后的部分)通常不参与索引判定,它更像是页面内的定位,不会被当作独立 URL 收录;但很多人把它和查询参数混在一起判断,反而模糊了重点。
为什么变体多了,收录会变乱
内链只要有一处写成变体形式,蜘蛛就可能顺着它发现这个新地址。每个变体被单独抓取一次,消耗的是同一份抓取额度;如果它们都返回 200,且没有明确的规范化信号,搜索引擎只能自己去猜哪个是代表版本。猜错的时候,出现在索引里的可能是一个带跟踪参数、内容不全或很少被链接的版本。
外链的情况更麻烦:别人用哪个版本链接你,你控制不了,于是权重也被分到不同地址上。
先量一遍站内到底有几个版本
- 用站内搜索或站点地图导出,看看内链里混用了哪些写法。
- 看服务器日志,确认爬虫实际访问过哪些变体形式。
- 看收录情况,核对是否出现了同名的多个版本。
- 抽查导航、面包屑、分页、分享按钮生成的链接,这几处最容易漏。
处理顺序:先定主版本,再收敛
- 确定唯一主版本:协议、主机名、末尾斜杠规则、大小写规则,一次性定下来并写进团队文档。
- 服务器层做 301:把其它变体永久重定向到主版本。大小写统一、末尾斜杠统一、去掉默认文件名,都放在这一层解决。
- 改内链、站点地图、canonical:全部指向主版本。canonical 是提示而非指令,和 301 一起用效果更稳,单独用不一定被采纳。
- 处理参数页:能静态化的筛选结果尽量做成静态路径;纯筛选、排序类参数页,可以 canonical 到主列表页,或用 robots 规则限制抓取,但不要一刀切屏蔽掉有真实搜索需求的页面。
- 保持重定向简洁:避免 A→B→C 的多跳,也不要让 301 指向一个 302 或 JS 跳转。
自查清单
- 首页在 http/https、www/非 www 下分别返回什么状态码。
- 站内是否存在同一个页面的大写与小写两个链接。
- 目录地址与 index.html 地址是否都返回 200。
- 分享出去的链接是否带 utm 参数。
- 重定向链是否超过一跳。
规范化不是一次性的动作。新增栏目、模板改版、投放活动,都可能重新引入变体,定期抽查比一次大扫除更有效。
把同一页面收敛到一个地址,不会立刻带来什么变化,但它减少的是后续所有环节的噪声:抓取更集中、重复内容更少、外链信号不再分散。做收录相关的工作时,这一步通常比追着收录数量更值得先做。