網站收錄

同一頁面的多種 URL 寫法:大小寫、结尾斜杠、www 與协议怎么收敛

同一個頁面可能以多種 URL 寫法被訪問和抓取,大小寫、结尾斜杠、www 與协议差异都會让搜尋引擎看到多個地址。本文梳理如何确定首選版本,用 301、canonical、内鏈和 sitemap 统一信号,並观察抓取與收錄資料是否随之稳定。

網站收錄

同一頁面的多種 URL 寫法:大小寫、结尾斜杠、www 與协议怎么收敛

同一個頁面,在浏览器地址栏里可能有很多種寫法:带 www 和不带 www、http 和 https、结尾有没有斜杠、路径里字母大小寫不同、參數顺序不一样。對用戶来说這些地址大多能打開,但對搜尋引擎来说,每一種寫法都可能被当成一個獨立 URL 去抓取和判断。如果這些版本同时存在,收錄資料就容易顯得杂乱:索引里可能同时出現多個地址,或者你期望收錄的那一個反而没被選中。

先确定一個首選版本

處理這類問题,第一步不是急着改代碼,而是先定下来:這個頁面以後用哪個 URL 作為标准地址。建议把范围缩到最小:协议、域名、路径、结尾斜杠,各選一個固定寫法。比如统一用 https、统一带 www 或不带 www、目錄頁保留结尾斜杠、文章頁不带结尾斜杠。選定之後,站内所有入口都往這個版本上靠。

這一步看起来简單,但很多站点的問题恰恰出在“没有明确标准”。不同栏目用不同寫法,編輯複製連結时又随手粘贴,時間一長,同一頁面就散成了好几個版本。

服務器层先做跳轉

标准版本确定後,優先在服務器层把其他寫法 301 到标准地址。常见的有:

  • http 訪問统一跳轉到 https;
  • 不带 www 的域名跳轉到带 www,或反過来;
  • 结尾斜杠的有無,按目錄和文件類型分別统一;
  • 路径大小寫不一致时,跳轉到全小寫或項目约定的形式。

301 是永久跳轉,适合這種地址归一。尽量在服務器配置里一次性處理,不要只依赖頁面里的 canonical 标簽。因為 canonical 是提示信号,而 301 會直接告诉爬虫“這個地址已经換了”。两者配合使用,效果通常比單用一個更清楚。

canonical 和内鏈別给出矛盾信号

有些站点因為歷史原因,没法立刻把所有舊地址都做 301,這时可以在頁面里用 canonical 标簽指向首選版本。但要注意,canonical 不是萬能的:如果同一個頁面里,A 版本 canonical 到 B,B 又 canonical 到 A,或者内鏈大量指向非首選版本,爬虫收到的信号就會互相打架。

實际操作中,可以按這個顺序检查:

  1. 頁面里的 canonical 是否指向首選版本;
  2. 站内導航、面包屑、列表頁連結是否都用了首選版本;
  3. sitemap 里提交的是不是首選版本;
  4. 分享按钮、跟踪參數生成的地址是否又带出了新變体。

其中内鏈和 sitemap 经常被忽略。它們不给“标准答案”的标簽,但會直接影响爬虫優先抓取哪個地址。

观察抓取與收錄是否跟着收敛

改完之後,不要只看某一天的索引量就下结论。URL 归一是需要观察窗口的:舊地址可能還會被訪問一段時間,服務器日誌里能看到跳轉记錄;索引里的舊版本也可能過一阵才慢慢减少。可以重点看两件事:

  • 日誌里爬虫請求的地址,是否逐渐集中到首選版本;
  • 搜尋结果里同一頁面是否還在用不同 URL 展示。

這里要区分“抓取”和“收錄”。爬虫抓取了舊地址,不代表它還會把舊地址留在索引里;反過来,索引里暂时還有舊地址,也不代表新地址没被處理。把這两個层面分開看,排查时不容易被單日資料带偏。

常见容易漏掉的几處

如果做完上面几步,URL 變体還是反复出現,可以回头检查這些地方:

  • 開發或測試环境留下的绝對地址,被複製到了正式頁面;
  • CDN 或反向代理层做了額外跳轉,和源站規則不一致;
  • 站内搜尋、篩選、排序參數生成了可抓取的地址;
  • 舊版頁面没有下线,但入口已经撤掉,形成“孤儿地址”。

URL 归一不是一次性工作,更像一條需要维持的規則。新栏目上线、改版、換域名时,都值得重新核對一遍首選版本有没有被新的寫法冲散。把标准固定下来,後續的收錄判断和重复内容處理都會省事很多。