網站收錄

中文路径、空格與百分号编碼:URL 寫法不统一时的统一顺序

站点里用了中文目錄名或带空格的 URL 时,同一個頁面常以原样中文、百分号编碼、加号等不同寫法出現,爬虫會当成多個地址。本文按核對現状、找出编碼来源、统一站内入口、收敛非規范寫法的顺序展開,說明每一步该看什么、容易漏掉什么。

網站收錄

中文路径、空格與百分号编碼:URL 寫法不统一时的统一顺序

有些站点用的是中文目錄名,或者把标题里的空格直接搬進了 URL。這類地址在浏览器里看着正常,但在不同位置被寫成不同形式:有的是原样中文,有的是百分号编碼;空格有时是 %20,有时是加号。搜尋引擎看到的是几條不同的 URL,索引里就可能留下多個入口。

先確認:是同一個頁面,還是真的两個頁面

別急着處理,先把状况分清楚。

  • 两條 URL 返回的狀態碼是否都是 200,正文内容是否一致。
  • 两個地址是否都被抓取過,日誌里出現的時間和频次如何。
  • 在索引里查一下,两條是否都在,占的是不是同一段内容。
  • 頁面上的 canonical 指向哪個地址,這個地址和實际使用的内鏈是否一致。

如果其中一條返回 301 或 404,那属于另一類問题;這里讨论的是两條都能正常打開、内容基本相同的情况。

编碼寫法不一致通常從哪来

  • 編輯器或 CMS 自動轉义,把中文寫成百分号编碼,而導航里仍是原样中文。
  • 複製分享連結时,空格被替換成加号。
  • 舊系統按一種编碼生成地址,新系統按另一種编碼生成,两套並存。
  • 第三方統計、推廣或分享參數在跳轉时對地址重新编碼。
  • 内鏈一部分人工填寫,一部分程序生成,两種寫法没有對齐。

统一顺序

  1. 先定一個規范寫法。比較稳妥的做法是:统一小寫、使用 UTF-8 百分号编碼、避免空格、不带多余參數。如果中文路径在分享和統計里经常出問题,長期看更推荐換成英文或拼音 slug。
  2. 確認服務器對非規范寫法的响應。有的服務器把未编碼的中文直接 200 返回,有的直接 404。两種情况下處理方式不同,先测清楚再動手。
  3. 统一站内所有入口。導航、面包屑、列表頁、相關推荐、站点地图、结构化資料里的 URL 都指向規范寫法。這一步往往比提交移除更管用,因為内鏈决定了爬虫反复走哪條路。
  4. 對非規范寫法做收敛。能做 301 的就 301 到規范地址;做不了的,用 canonical 指向規范地址,同时停止在站内連結非規范版本。
  5. 确定後一段時間内不要再改。索引替換需要爬虫重新抓取並處理,频繁更換寫法反而會让两個地址長期並存。

容易踩的坑

  • 只調了 canonical,内鏈却還在用舊寫法,收敛會很慢。
  • 中文路径被重复编碼,變成以 %25 開头的地址,頁面實际打不開,但爬虫仍會当作一個獨立 URL 记錄。
  • 規范地址和分享參數混在一起,參數版本又變成新的收錄入口。
  • 站点地图里同时列出两種寫法,等于主動告诉爬虫两個地址都值得走。
编碼問题本身不复杂,麻烦的是生成連結的地方分散在多處。先把所有产出 URL 的位置列出来,再统一,比反复提交要省事。

统一之後看什么

观察日誌里規范地址的抓取频次是否上升、非規范地址是否逐渐减少,再隔一段時間看索引里保留的是哪一條。這個過程依赖爬虫自己的抓取安排,不會立刻见效,也不保證一定按预期收敛。如果長期两個地址都還在,可以回头查一查是否有外部連結仍指向非規范版本,或者頁面上還残留着舊寫法。