同一个页面,往往不止一个 URL 写法。带不带尾斜杠、大小写、是否带 index.html、参数顺序不同,甚至挂上跟踪参数,都会生成一个新的字符串。对蜘蛛来说,URL 是字符串而不是页面,字符串不同就可能被当成另一个地址排进队列。重复入口多了,抓取预算被摊薄,日志和报表也会虚高。
常见的几种重复写法
- 尾斜杠差异:/a 与 /a/
- 大小写差异:/Page 与 /page,在大小写敏感的服务器上是两个地址
- 默认文件名:/a/ 与 /a/index.html
- 参数顺序:?a=1&b=2 与 ?b=2&a=1
- 跟踪与营销参数:?utm_source=... 这类附加参数
- 协议与主机名:http 与 https、带 www 与不带 www
蜘蛛会怎么处理这些写法
蜘蛛在解析页面时,会对同一页面内的链接做一次简单去重,但那只针对完全相同的字符串。只要写法有差别,它就会当成新 URL 去发现、排队、抓取。canonical 标签是提示,不是强制指令;服务器端的 301 更明确,蜘蛛看到跳转后会把目标当作最终地址。
如果内链、Sitemap、外链分别指向不同写法,同一个页面就可能被从几条路径反复抓取,而真正需要抓取的新页面排在后面。
重复 URL 带来的实际影响
- 抓取预算被分散到同一份内容的多个地址上,新页面的发现速度可能变慢。
- 服务器日志里的抓取次数虚高,看起来抓了很多,实际有效页面并不多。
- 外链权重被拆到多个 URL,页面在链接关系上显得更弱。
- Sitemap 和内链写法不一致时,蜘蛛收到的信号互相矛盾,规范地址更难确立。
收敛重复入口的做法
- 先定一个规范写法:确定是否带尾斜杠、用哪个主机名和协议,然后全站统一。
- 内链按规范写法写:导航、面包屑、正文链接、分页链接都用同一个写法,这是最省事也最有效的一步。
- 服务器做 301:把大小写错误、index.html、旧协议、非首选主机名统一跳到规范地址,一条规则能解决一批。
- canonical 指向规范地址:页面自身也使用规范地址,不要指向另一个变体。
- Sitemap 只列规范 URL:不要把所有变体都塞进去,那等于主动把蜘蛛引向重复地址。
- 处理跟踪参数:能去掉参数做跳转的去参数跳转,去不掉的用 canonical 收敛,并避免在内链里带参数。
怎么确认是否收敛了
把一段时间内的服务器日志按 URL 归并,观察同一份内容对应几个地址、各自被抓了多少次,再看这部分重复抓取的占比是否在下降。如果改完规则后,重复写法仍然被大量抓取,通常是还有内链或外链指向旧写法,需要继续找来源。
规范化的目标不是让页面不被抓,而是让抓取次数集中在一个地址上。收敛需要一段时间,旧的写法被外部引用得越多,过渡期就越长。
重复 URL 不会立刻造成明显问题,但它会持续消耗抓取资源,并让路径判断变得模糊。把写法统一、跳转做清楚、Sitemap 只留规范地址,是运营侧能直接落地的三件事。