常见问题

入口页的目标链接带参数或做过 URL 重写,搜索蜘蛛会当成新 URL 吗?

入口页里的目标链接常常带参数、做过伪静态,或者大小写、末尾斜杠不一致。字符串不同,搜索蜘蛛通常会先当成不同 URL 去尝试抓取;能不能合并成一个,取决于目标站点有没有做 301、canonical 等收敛处理。本文梳理常见的参数类型、伪静态的注意点,以及入口页能控制和管不到的部分。

常见问题

入口页的目标链接带参数或做过 URL 重写,搜索蜘蛛会当成新 URL 吗?

入口页里放的目标链接,经常不是干净的静态地址:有的是 ?id=123 这种带问号的,有的做过伪静态,有的区分大小写,还有的末尾带不带斜杠都能打开。这些差异在浏览器里看起来差不多,但在搜索蜘蛛眼里未必是同一个 URL。下面把常见情况和判断方法拆开讲。

搜索蜘蛛判断 URL 的先后顺序

搜索蜘蛛拿到一个链接字符串,首先把它当作一个独立的 URL 来对待。字符串层面不同,通常就先去重成两个候选地址。之后才轮到抓取、看返回内容、看页面里的规范化声明。如果服务端对这两个地址返回完全一样的内容,并且页面上写了 rel=canonical 或者做了 301,搜索引擎才有机会把它们合并成一个。

所以关键不在“入口页怎么写”,而在于目标站点有没有把不同写法的 URL 收敛到同一个地址。入口页写得再整齐,目标站点自己不收敛,照样会产生重复候选。

几种看起来一样、其实不一样的情况

1. 追踪参数和来源参数

?from=xxx、?ref=xxx 这类参数,如果服务端不做处理,返回内容和主地址一致,就会被当成两个 URL。搜索引擎确实倾向于忽略一部分常见参数,但没有保证,参数名越冷门越容易被当成独立地址。

2. session、token、时间戳

带 session id 或时间戳的地址最麻烦:每次生成都不一样,等于每次都在制造新 URL。入口页如果是动态拼这类参数,搜索蜘蛛会不断发现“新”地址,抓回来的却是同一篇内容,抓取预算会被白白消耗。入口页里尽量不要输出这类链接。

3. 伪静态与原始参数路径

伪静态只是在服务器层面把 /a/123.html 重写成了 /article.php?id=123。对搜索蜘蛛来说,它看到的是 /a/123.html,会按这个地址抓取。只要服务器稳定返回同一个页面,并且不额外暴露原始带参数地址,问题不大。真正的问题往往出在两种写法同时在站内出现:一边输出伪静态,一边又输出了原始参数地址。

4. 大小写、末尾斜杠、默认端口

这几类差异在很多服务器上会被当成不同 URL。入口页统一写法,比如全部小写、统一不带末尾斜杠,能减少无谓的重复,但前提是目标站点也这么处理。

入口页能管到的和管不到的

  • 能管到:链接是否被输出、输出成什么字符串、放在哪个页面、周围有没有内容、是否被 nofollow 或 JS 隐藏。
  • 管不到:目标站点返回什么状态码、是否做 301、canonical 指向哪里、搜索引擎最终合并成哪个版本。
  • 也管不到:最终会不会进索引。被发现只是第一步。

实操上的排查顺序

  1. 先确认入口页输出的链接字符串是唯一的,同一个目标不要出现两种写法。
  2. 随机抽几个地址,用不带 cookie 的方式请求,对比返回内容和主地址是否一致。
  3. 看目标站点有没有对带参数的地址做 301 或 canonical 收敛。
  4. 翻服务器日志,统计同一篇内容对应了几个不同 URL 的抓取记录。
  5. 如果入口页是动态生成的,检查有没有把时间戳、session、随机数拼进链接。
发现 URL 和合并 URL 是两件事。入口页做得再规范,也只是把候选地址交到搜索蜘蛛手里;重复地址是否收敛,最终由目标站点的规范性设置决定。

一个容易被忽略的点

有些入口页为了“显得内容丰富”,会把同一个目标写成列表页地址、详情页地址、带参数地址三种形式。这不是在提升发现量,而是在制造重复。同一个目标在入口页里保留一条最规范的地址就够了。

另外,如果目标站点本身有分页、筛选、排序这类会产生大量参数组合的功能,入口页就更不该往这些地址上引。把抓取预算花在参数组合上,通常没有收益。

总结一句:带参数或伪静态的链接,搜索蜘蛛会当成新 URL 去尝试抓取;算不算同一个、会不会被合并,取决于服务端返回和站点的规范化设置。入口页能做的是减少重复写法、剔掉无效参数,把地址交得干净一点。