搜尋抓取

URL 形態不统一:大小寫、斜杠與預設頁带来的重复發現

同一篇内容在站内可能出現大小寫、结尾斜杠、預設文件名、协议主机名、跟踪參數等多種網址寫法,每種寫法都可能被搜尋蜘蛛当成獨立的 URL 去發現和抓取。本文梳理常见的形態分叉,說明它們消耗的抓取机會,並给出服務器跳轉、内鏈书寫、Sitemap 與日誌核對的收口顺序。

搜尋抓取

URL 形態不统一:大小寫、斜杠與預設頁带来的重复發現

同一篇内容,在站内可能同时存在好几種網址寫法:大寫和小寫、带结尾斜杠和不带、带 www 和不带、加不加預設文件名。對訪問者来说它們都能打開頁面,但對搜尋蜘蛛来说,這可能是几個不同的 URL。發現入口一多,抓取與規范化的信号就被摊薄了。

常见的 URL 形態分叉

先把容易出問题的地方列一遍,逐項對照自己的站点。

  • 大小寫:/About 與 /about 在部分服務器上指向同一文件,但在 URL 层面是两個地址。
  • 结尾斜杠:带斜杠與不带斜杠被服務器当成两條路径處理时,就會多出一份入口。
  • 預設頁文件名:目錄地址與目錄下加預設文件名都能訪問,連結寫法不统一就會分叉。
  • 协议與主机名:http 與 https、带 www 與裸域,如果都能打開且没有统一跳轉,就是两套入口。
  • 參數顺序與跟踪參數:參數顺序颠倒,以及 utm、from、spm 之類的来源标记,會生成大量近似 URL。
  • 锚点與编碼:锚点通常不产生新頁面,但中文、空格被编碼成不同形式时,可能被当成不同地址。

多形態 URL 消耗的是什么

搜尋蜘蛛對每個站点的来訪次數是有限的。同一頁面用五種寫法被訪問,等于把本来可以用在別處的来訪次數花在了重复内容上。更麻烦的是内部連結不统一:導航指向一種寫法,正文指向另一種,Sitemap 里又是第三種,蜘蛛很难判断哪個才是你希望展示的版本。

形態分叉不會立刻带来明顯問题,它更像慢性消耗。單頁看不出来,站点規模一大,日誌里就會堆出大量近似 URL。

把入口收到規范形態上

目标很简單:每個頁面只保留一個規范 URL,其余形態用一次跳轉指過去,並且站内所有連結都寫成規范形態。

服務器层的统一

  • 确定一種主机名,另一種做跳轉,不要两套並行。
  • 全站切到 https 後,http 版本统一跳轉,避免長期共存。
  • 大小寫與结尾斜杠各選一種規則,其余跳轉,注意別形成跳轉鏈。
  • 預設頁文件名對外不可见,連結里不要寫出来。

頁面與連結层的统一

  • 規范頁面加上 canonical,指向自己的唯一形態,不要指向中間的跳轉地址。
  • 導航、面包屑、正文内鏈、相關推荐,全部按同一規則书寫。
  • Sitemap 只放規范形態,不放會跳轉的地址,也不放带跟踪參數的地址。
  • 站内搜尋、篩選、分享按钮生成的連結,尽量不让来源參數進入可抓取范围。

核對顺序

改完之後,按下面的顺序回头看一眼,比盲目改一堆規則更有效。

  1. 在服務器日誌里按路径統計,找出被搜尋蜘蛛抓取、但明顯指向同一内容的近似 URL。
  2. 抽查几十條内鏈,看它們實际寫的是哪種形態,重点看模板生成的部分。
  3. 用抓取工具抽查跳轉鏈,確認是一跳到規范地址,而不是两跳三跳。
  4. 確認 Sitemap 里的地址與最终落地地址完全一致,中間没有跳轉。
  5. 观察一段時間,比較近似 URL 在抓取记錄里的占比是否下降。

URL 形態统一是件琐碎的事,但它是 URL 發現路径的地基。地基理顺了,再讨论抓取深度、内鏈层級和抓取预算才有意义。