站点运营

站点运营:URL 大小寫與尾斜杠自查,別让一個頁面變成好几個地址

同一個頁面,在服務器上只有一個文件,在 URL 层面却可能有好几種寫法:大小寫不同、尾斜杠有無、带不带 index、带不带參數。訪客和蜘蛛各用各的地址,日誌就散了,權重也散了。這篇讲怎么盘点這些重复地址,定一條统一規則,再用 301 和 canonical 慢慢收敛回来。

站点运营

站点运营:URL 大小寫與尾斜杠自查,別让一個頁面變成好几個地址

同一篇文章,在服務器上只是一個文件,但在 URL 层面往往有好几種寫法。首頁可能是 example.com、example.com/、example.com/index.html;栏目頁可能是 /news 和 /news/;如果站内還混用了大小寫,/News 和 /news 在 Linux 服務器上就是两個不同的地址。

這些寫法在浏览器里看着都正常,訪客也不會察觉。但對站点运营来说,它們會把同一份内容拆成多個地址:日誌分散、内鏈指向不一、外部連結各寫各的,最後谁也说不清哪個才是這個頁面的「正主」。

先搞清楚地址是怎么分叉的

常见的分叉点其實不多,盘点一遍就能對上号:

  • 大小寫:Windows 服務器不区分,Linux 服務器区分。迁移過主机的站点尤其容易出問题。
  • 尾斜杠:目錄型路径(如 /news)加不加斜杠,服務器可能返回两個都通的结果。
  • 預設文件名:/news/ 與 /news/index.html 指向同一份内容。
  • 协议與域名:http 與 https、带 www 與不带 www,如果没做强制跳轉,就是四套地址。
  • 參數變体:追踪參數、排序參數、會话 ID 拼在地址後面,同一個頁面能生成無數個 URL。

怎么盘:三步走

第一步,翻日誌

挑几篇有代表性的内容頁和栏目頁,在服務器日誌里搜關鍵詞,看同一個頁面被訪問时出現過几種路径寫法。這一步不需要工具,靠搜尋就行,但结果最真實——日誌里怎么寫,說明訪客和蜘蛛實际就是這么進来的。

第二步,手工试

拿一個地址,依次试它的各種變体:全小寫、首字母大寫、带斜杠、不带斜杠、加 index 後缀。看服務器分別返回什么狀態碼。如果几個變体都是 200,說明這些地址在搜尋引擎眼里确實是並存的多份。

第三步,對内部出口

站内鏈、導航、面包屑、Sitemap、canonical 标簽、分享按钮,這几處輸出的地址是否一致。很多站点的分叉就是從這些小地方来的:導航寫不带斜杠,Sitemap 寫带斜杠,分享按钮又多加一個參數。

規則怎么定

没有绝對正确的寫法,只有统一不统一的寫法。定規則时考虑三点:服務器环境、歷史外鏈情况、改動成本。

  • 全站统一小寫,這是最省事的選擇,Linux 环境下也最稳。
  • 目錄型路径统一带尾斜杠,文件型路径(如 .html、.jpg)不带。規則简單,好记好执行。
  • 預設文件统一收口,/news/index.html 只保留一個入口,其余全部跳轉到選定版本。
  • 协议與域名只留一套,其余 301 過去,並让内鏈全部使用最终版本。

修复的顺序

不要一上来就大批量加跳轉,容易把自己轉晕。建议按這個顺序:

  1. 先改内部出口:導航、正文内鏈、Sitemap、canonical,全部改成统一的最终地址。
  2. 再對非目标版本加 301,跳到目标版本。
  3. 观察一到两周日誌,看舊的寫法是否還有稳定流量進来,判断這條跳轉要不要長期保留。
  4. 如果某個變体還有大量外鏈指向,把跳轉保留着,不要急着撤。
改動期間不要叠加太多變量。同一時間既改 URL 規則又改模板结构,出問题时很难判断是哪一步造成的。

几個容易踩的坑

  • 用 302 長期顶着。临时跳轉不是用来做地址收敛的,時間長了搜尋引擎可能仍然按原地址處理。
  • 跳轉鏈套了好几层。A 跳 B,B 跳 C,每次訪問都要多走一跳,不如直接 A 跳 C。
  • 靠 canonical 代替 301。canonical 是给搜尋引擎的提示信号,跳轉是给所有訪問者的确定性動作,两者职责不同,能跳就跳。
  • 參數變体当成普通重复地址處理。带參數的頁面往往有自己的用途(篩選、排序),處理方式要單獨定,不要一刀切全部 301 回主頁面。
  • 改完後没有回头驗證。至少隔一周再抽查一遍,確認内鏈、Sitemap、跳轉三者輸出的是同一個地址。

小结

URL 規范這件事,做的时候枯燥,收益也不像改标题那样立竿见影,但它决定了站点在日誌、内鏈和外部引用里是不是一個整齐的形象。花半天時間把地址统一到一套寫法上,後面每次看日誌、做外鏈、排查抓取異常,都會省下不少解释成本。