常见問题

入口頁的目标連結带參數或做過 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 去尝试抓取;算不算同一個、會不會被合並,取决于服務端返回和站点的規范化設定。入口頁能做的是减少重复寫法、剔掉無效參數,把地址交得干净一点。