同一份内容對應多個 URL,是收錄工作里最常见也最容易被忽略的問题。它不一定来自參數或轉载,很多时候只是地址寫法不统一:带 www 和不带 www、结尾有没有斜杠、路径里某段用了大寫、http 和 https 各来一次。對訪客来说這些地址打開的是同一個頁面,對搜尋引擎来说却可能是若干條彼此獨立的记錄,抓取量、外鏈信号和索引狀態都會被摊薄。更麻烦的是,這種分裂通常不會报错,只會表現為“這個頁面收錄了,但收錄的那個地址不是我想要的”。
先把 URL 變体查全
動手收敛之前,建议先做一次盘点。只凭印象回忆容易漏掉一两類,後面又要返工。可以结合服務器日誌、站内搜尋、外鏈工具和 sitemap,看同一批内容到底被多少種寫法訪問過。
主机名與协议
http 與 https、带 www 與不带 www,這四種组合如果都能直接打開並返回 200,就等于给每個頁面准备了四個入口。現在多數站点已经全站 https,但 http 没有做跳轉的情况仍然存在。
大小寫與尾斜杠
Linux 环境下路径大小寫敏感,/About 和 /about 在服務器看来是两個地址。尾斜杠同理,/news 與 /news/ 是否指向同一處,取决于服務器配置和框架路由,不能想当然。
預設文档與多余參數
index.html、index.php 這類預設文档被顯式寫進 URL,會額外产生一份副本。此外,明明只用于後台統計的跟踪參數、會话 ID 被拼在連結上,也會让同一頁面裂成更多地址。
規范版本怎么選
選哪一個作為正式版本,主要看既有事實,而不是看哪個讀起来顺眼。可以從這几處找依據:
- 歷史外鏈和分享主要指向哪個寫法,尽量不要让已积累的連結失效;
- 已有的收錄頁里,哪個版本占比更高;
- 站点日誌中被抓取最频繁的那個;
- 技術實現上最容易長期维持统一的那個。
這几点如果指向不一致,優先考虑外鏈和已有收錄,改動的代價最小。
收敛的操作顺序
确定目标版本後,按下面的顺序處理,比零散修改更容易看出效果:
- 把站内所有内鏈、導航、面包屑统一到規范寫法,包括模板和硬编碼的舊連結。
- 服務器层面對其他變体做 301 跳轉,指向規范地址,而不是用 JS 或 meta 跳轉代替。
- sitemap 只保留規范地址,避免主動提交多種寫法。
- 頁面上的 canonical 與 sitemap、内鏈保持一致,作為兜底而非唯一手段。
- 跳轉鏈尽量一步到位,避免 A 跳 B、B 再跳 C 的長鏈條。
- 改動完成後观察一段時間的日誌,確認舊寫法訪問量下降、新地址被抓取。
301 與 canonical 是两件事:前者解决訪問入口,後者表達偏好。只做标注不做跳轉,用戶和蜘蛛仍會走到舊地址上,收敛速度會慢很多。
几個容易踩的邊界
尾斜杠要看具体類型
目錄型地址和文件型地址的處理規則不同。给静態资源加尾斜杠、给目錄去掉尾斜杠,都可能直接導致 404,改之前先小范围驗證。
別急着一次改完
如果站点規模較大,可以按目錄分批推進,每批改完观察索引狀態再做下一批。一次性全站改動,出問题时很难定位是哪一步引起的。
收錄更新需要時間
跳轉上线後,舊地址不會立刻從索引里消失,新地址也不會马上替換上去。這段過渡期出現新舊並存是正常的,重点看趋势是否朝規范化方向走。
把 URL 寫法统一,收益不在于某個頁面立刻被收錄,而在于不再让同一份内容分散成多條记錄。日常维護中,新建栏目或改版时顺手检查一次預設寫法,比事後集中清理省力得多。