常见问题

入口页链接带了一串无用参数,搜索蜘蛛抓的到底是哪个 URL

入口页给目标 URL 挂上来源标记、会话 ID、排序参数,看着只是多几个字符,实际会让搜索蜘蛛把一个页面当成多个地址。本文说明哪些参数容易被合并、哪些会被当成独立 URL,以及在蜘蛛池入口页里写链接、收敛地址的具体做法与自查思路。

常见问题

入口页链接带了一串无用参数,搜索蜘蛛抓的到底是哪个 URL

给蜘蛛池入口页写链接时,很多人会顺手在目标 URL 后面挂一串参数:来源标记、栏目 ID、排序方式、时间戳、会话 ID。写的时候只是多敲了几个字符,等到翻抓取日志才发现,同一批目标地址被拆成了几十个变体,蜘蛛在门口来回打转,真正想被发现的页面反而没进几个。下面把这件事拆开说清楚。

为什么参数会让 URL 发现变复杂

从字符串角度看,/article?id=12 和 /article?id=12&from=list 是两个不同的地址。搜索蜘蛛在调度抓取前必须先判断:这是两个需要单独抓取的页面,还是同一个页面的不同写法。判断一旦偏向某一边,结果都不理想——要么把同一份内容抓了很多遍,浪费抓取预算;要么把本该被发现的地址当成重复项长期搁置。参数越多、组合越随机,这种判断就越依赖算法自身的归一化能力,而这部分并不在你手里。

搜索蜘蛛通常怎么处理带参数的 URL

比较容易被合并的参数

  • 会话类:sessionid、sid、PHPSESSID,每次访问都可能变化,页面内容没有实质差异。
  • 来源追踪类:utm_source、from、ref、spm 等标记,服务端一般不会用它渲染内容。
  • 展示类:sort=、view=list、display=grid,区别只在排序或展示形式。

这类参数被合并是常见结果,但不同搜索引擎的力度并不一致,也没有对外公开的清单。

容易被当成独立地址的参数

  • 分页类:page=2、p=3,内容确实不同,通常会被当作单独的 URL。
  • 筛选类:category=、price=、lang=,筛选结果页往往有自己的地址身份。
  • 内容标识类:id=、aid=、article_id=,这通常就是页面本身的身份。

入口页里怎么写更稳妥

  1. 目标 URL 优先用静态或伪静态路径,参数只留给真正影响内容的维度。
  2. 不要嵌套参数,例如 ?url=/a?b=1 这种写法需要编码,解析出错时链接会直接失效。
  3. 同一个目标在入口页只出现一次,不要用带参数和不带参数各写一遍,那等于主动制造重复项。
  4. 必须带参数时,保持参数顺序和大小写一致:a=1&b=2 与 b=2&a=1 在部分系统里会被视为两个地址。
  5. 用服务端 301 把带追踪参数的地址收敛到规范地址,比让蜘蛛自己判断更直接,也更容易在日志里核对。

自查时可以看这几个点

  • 抓取日志里带问号的 URL 占比有多高,是否明显超过目标页面的实际数量。
  • 同一目标是否出现了多种参数组合,并且都被记录成独立的抓取。
  • 入口页里是否存在跳转后才落到目标地址的链接,跳转前和跳转后是否都被当成独立页面。
  • 站内是否有多个入口指向同一目标,且写法不统一。
参数本身不是问题,问题是让参数参与了定义地址的身份。目标 URL 的身份越单一,URL 发现和后续的抓取调度就越省事。

需要提醒的是,以上都是降低干扰、提高发现效率的常规做法,具体结果取决于搜索引擎的调度策略、站点质量以及可用的抓取预算,没有哪一步能保证被收录。把入口页写干净、把地址收敛好,是你能控制的那部分。