在蜘蛛池和入口页运营中,很多人会随手复制链接:有时带 www,有时不带;有时结尾有斜杠,有时没有;参数顺序也随缘。这些看起来只是“写法不同”,但搜索蜘蛛判断一个 URL 是否已经抓过,首先看的是它拿到的 URL 字符串。写法不一致,就可能被当成多个地址处理。
搜索蜘蛛先看到的是 URL 字符串
蜘蛛从入口页解析出链接后,会先做一轮规范化,再决定是否请求。规范化的范围包括:主机名大小写、默认端口、部分百分号编码、片段标识等。但路径大小写、末尾斜杠、查询参数顺序,不同引擎的合并策略并不完全一样。
哪些差异通常会被合并
- 协议和主机名大小写:HTTP://EXAMPLE.COM 和 http://example.com 通常视为同一主机。
- 默认端口:http://example.com:80 与 http://example.com 一般会归一。
- 空片段:/page# 和 /page 多数情况下按同一 URL 处理。
- 部分编码:空格写成 %20 或 + 可能被等同,但路径中其他编码不一定。
哪些差异更容易被当成不同 URL
- 路径大小写:/Target 与 /target 在很多服务器上是两个不同资源,蜘蛛通常会分别请求。
- 末尾斜杠:/a 和 /a/ 在没有重定向统一时,常被当成两个地址。
- 查询参数顺序:?a=1&b=2 和 ?b=2&a=1 部分引擎会归一,部分不会,取决于实现。
- 片段标识:/a#one 和 /a#two 一般不会作为两个页面分别抓取,片段不会发送给服务器;入口页大量不同片段指向同一地址,对发现新 URL 帮助有限。
对入口页和目标 URL 的实际影响
如果入口页把同一个目标 URL 写成多种变体,可能的结果是:蜘蛛重复抓取同一内容,占用抓取配额;目标 URL 的信号被分散;日志里出现多个相似地址,让你误判“来了很多蜘蛛”。更麻烦的是,如果变体分别返回不同状态码,还可能触发不必要的重定向链。
入口页的作用是帮助发现 URL,不是制造 URL 变体。统一写法比堆量更有意义。
怎么统一和减少重复
- 入口页内部链接使用同一套格式:确定是否带 www、是否带尾斜杠、参数顺序如何排列。
- 对已知变体做 301 到规范地址,避免 302 链和多次跳转。
- 在页面 head 里用 canonical 指向规范 URL,但不要只靠 canonical 解决所有问题。
- sitemap 和入口页链接保持一致,不要一个写 /a,另一个写 /a/。
- 参数类链接尽量用路径或固定顺序,避免蜘蛛把同一个页面当成大量新 URL。
观察日志时的注意点
看蜘蛛日志时,不要只看“总请求数”。把相似 URL 合并统计,观察规范地址是否被抓、变体是否被反复抓。如果变体请求多但规范地址请求少,说明入口页的链接写法需要收敛。如果变体都返回 301,最终地址稳定,问题通常不大,但仍会消耗一次抓取。
不同搜索引擎对 URL 规范化的处理并不完全公开,也没有统一标准。能做的是让入口页里的链接尽量一致,把“发现”这件事做得干净,减少蜘蛛在重复地址上的无效消耗。