很多站点在服務器上其實只有一份内容,但在 URL 层面却存在好几個看起来都對得上的地址:带 www 和不带 www、末尾有斜杠和没斜杠、路径里大小寫不同。這些地址返回同样的頁面,用戶也能正常打開,因此很容易被忽略。但對搜尋蜘蛛来说,它們是不同的 URL,抓取和後續處理都會被分散。
同一份内容為什么會有多個地址
原因多數来自歷史遗留,以及不同人不同时期的操作习惯差异:
- 導航、面包屑、正文内鏈分別由不同的人编寫,寫法不统一;
- 頁面模板輸出的連結带尾斜杠,而手工插入的連結不带;
- 服務器(尤其是部分 Windows 环境或 CDN 配置)對路径大小寫不敏感,/About 和 /about 都能正常返回;
- 外鏈、QR Code、推廣物料里使用了不同寫法。
当這些變体同时被蜘蛛發現,就會出現同一份内容被反复抓取、抓取预算被無谓消耗的情况;如果每個變体都被獨立處理,統計报表里同一篇内容的流量也會被拆成几份。
自查:先把變体找出来
建议按下面的顺序走一遍,不需要額外工具也能開始:
- 看抓取日誌:篩選狀態正常的請求,把同一路径的不同大小寫、带不带尾斜杠的請求單獨列出来,按請求量排序。
- 搜站内連結:用站内搜尋或全局查找,检查導航、面包屑、列表頁、正文里的連結寫法是否统一。
- 看外部呈現:用 site: 指令或第三方工具,观察同一内容是否以多個地址出現。
- 手動试:把關键頁面 URL 改一下大小寫、去掉或加上尾斜杠,看服務器返回的是正常頁面還是跳轉。
尾斜杠:目錄還是文件,需要定一個規矩
尾斜杠本身没有绝對的對错,關键是全站一致。常见两種做法:
- 目錄式:/seo/ 表示栏目,/seo/guide 表示具体頁面;
- 文件式:所有頁面都当作文件,统一不带尾斜杠。
選定一種之後,另一種寫法用 301 永久重定向指過去,不要用 302,也不要让两個版本都返回正常頁面。同时注意跳轉只做一次,避免叠成鏈條。
大小寫:不要依赖服務器的宽容
不少服務器會把 /News/2024 和 /news/2024 当成同一個文件,但 URL 規范中路径部分通常是大小寫敏感的。這意味着換一台服務器、換一次配置,原本能打開的地址可能就變成 404。
相對稳妥的做法是:路径统一使用小寫字母,單词之間用短横线分隔,尽量避開下划线、空格和中文。已经上线並被外鏈引用的大寫地址不要直接删掉,用 301 逐個指到小寫版本。
协议與主机名也要一起看
除了路径,還有两层经常被遗漏:
- 协议:http 與 https 只保留一個,另一個 301 到規范版本;
- 主机名:example.com 與 www.example.com 二選一,另一個同样 301。
协议、主机名、路径這三层叠加起来,最容易产生同一個頁面好几個地址的問题,检查时要放在一起看,而不是只盯路径。
几個容易踩的坑
- 用 JavaScript 或 meta refresh 做大小寫跳轉,蜘蛛不一定完整执行;
- 两個版本都保留,並且各自都有站内連結,等于主動告诉蜘蛛两邊都重要;
- 只在站点地图里寫規范地址,站内連結却乱七八糟,效果會打折;
- 改完不复查,過一段時間模板更新又把老寫法带了回来。
規范化的目标不是多做一個技術動作,而是让全站對同一個頁面只保留一個明确地址。前提是站内連結、重定向、站点地图三處口径一致。
這件事很难一次做完就不再管。模板改版、栏目調整、运营同事手工加連結,都可能重新引入新的變体。把它放進每次上线前的检查清單,比出問题後再逐個排查省力得多。