網站收錄

大小寫、斜杠、參數顺序:同一個頁面被拆成多個 URL 之後

同一個頁面往往能用好几種 URL 打開:大小寫不同、结尾多一個斜杠、參數顺序颠倒、带上追踪參數。這些變体不會自動合並,容易被分別抓取甚至分別索引。本文按處理成本從低到高,讲清站内連結统一、301 归一、canonical 兜底和參數取舍的具体做法。

網站收錄

大小寫、斜杠、參數顺序:同一個頁面被拆成多個 URL 之後

很多站点在統計收錄时都會遇到同一個困惑:明明只有一個内容頁,索引里却出現了两三條,URL 略有差別,标题和摘要却一模一样。這通常不是頁面质量問题,而是 URL 没有归一——同一個頁面被拆成了多個地址。

一個頁面為什么會變成好几個 URL

下面這些情况,只要站点没有统一约定,就會出現多個可訪問地址:

  • 大小寫不同:/Article/123/article/123 都能打開;
  • 结尾斜杠:/topic/topic/ 都返回 200;
  • 协议與主机名:http 與 https、带 www 與不带 www 同时可訪問;
  • 參數顺序不同:?a=1&b=2?b=2&a=1
  • 追踪與會话參數:utm_、from、sid、ref 等;
  • 排序、篩選、分頁參數:sort、filter、page;
  • 带索引文件名的寫法:/list/list/index.html

這些變体在服務器看来都是正常請求,于是蜘蛛可能把它們当成不同的 URL 分別抓取。

多 URL 會带来什么實际影响

影响没有想象中那么玄,但确實是可观察的:

  • 抓取被分散:同一份内容要被抓多次,真正需要更新的新頁面分到的時間變少;
  • 索引里出現多條:搜尋引擎需要判断保留哪一條,判断结果不一定和你期望一致;
  • 外鏈權重分散:不同人連結到不同變体,信号被拆開;
  • 日誌难以分析:抓取統計里同一個頁面被算成好几個;
  • 改版时容易漏改:只有部分變体被重定向,舊地址繼續可訪問。

按成本從低到高處理

  1. 先统一站内連結寫法。導航、列表、面包屑、正文内鏈全部指向同一個版本。這是成本最低、见效最直接的一步,站内連結是蜘蛛發現 URL 的主要入口。
  2. 服務端做 301 归一。把非規范版本(http、無 www、带 index.html、大寫路径)永久重定向到規范地址。比起 canonical,301 更硬,也更适合處理协议和主机名這類结构性差异。
  3. 用 canonical 兜底。參數顺序、追踪參數這類难以全部在服務端拦掉的變体,可以在頁面里声明規范地址。注意 canonical 是建议不是指令,不要指望它解决所有問题。
  4. 處理追踪參數。外鏈带来的 utm 參數如果被站内連結繼承並繼續传播,會生成更多變体。可以在服務端把無用參數剔除後重定向,或在頁面内的連結生成时直接去掉。
  5. sitemap 只放規范地址。把變体也寫進 sitemap,等于主動告诉蜘蛛這些地址同样重要。

带參數的 URL:哪些该留,哪些该收

影响内容的參數

篩選、排序、分頁這類參數會改變頁面呈現的内容,通常需要保留,但最好让它們指向一個稳定的组合,避免同一種篩選出現多種參數排列。

不影响内容的參數

追踪、會话、来源标记類參數不改變頁面内容,理想狀態下不應出現在被抓取的 URL 里。常见做法是重定向剥离,或者用 robots.txt 配合參數處理工具限制抓取。

判断标准很简單:這個參數去掉之後,用戶看到的内容是否完全一样。一样就属于可以收掉的一類。

怎么確認自己有多少個變体

  • 在搜尋引擎里用 site: 加路径片段,看同一篇内容出現在几個 URL 下;
  • 翻服務器日誌,統計同一路径的不同寫法各被請求了多少次;
  • 看索引覆盖报告里“重复網頁,Google 選擇的規范網頁與用戶指定的不同”這類提示;
  • 随机抽几個頁面,手動试 http/https、有無尾斜杠、大小寫,確認是否都返回 200。

URL 規范化的目标不是把所有訪問方式都堵死,而是让搜尋引擎清楚地知道哪一個地址才是主版本,其余的要么重定向過去,要么明确表示不重要。這件事做完,抓取和索引的帳才更容易算清楚。