網站收錄

URL 里的中文、空格和特殊符号:蜘蛛抓取时會怎么處理

URL 里的中文、空格、大小寫和特殊符号,容易让同一個頁面出現多個地址。本文梳理這些寫法是怎么产生的、蜘蛛會怎么處理,以及如何用跳轉、canonical 和站点地图把寫法收口到一處,减少抓取分散和索引重复。

網站收錄

URL 里的中文、空格和特殊符号:蜘蛛抓取时會怎么處理

很多收錄問题不是内容問题,而是地址本身有多個寫法。同一個頁面,浏览器能打開、蜘蛛也能打開,但蜘蛛看到的 URL 和你以為的那個可能不是同一個。中文、空格、特殊符号、编碼方式,任何一個环节不统一,都會让一個頁面在抓取和索引里變成好几個候選。

蜘蛛拿到的 URL,和你複製到表格里的可能不一样

地址栏里顯示為中文的部分,在實际請求中通常是百分号编碼。比如路径里的「蜘蛛」,在 UTF-8 下會被寫成 %E8%9C%98%E8%9B%9B。空格也比較麻烦:有的地方编碼成 %20,有的地方寫成加号,還有的浏览器直接留一個空格,服務器收到的是三種不同的請求。

服務器對大小寫的態度也不一样。Linux 环境下,/Page-A/page-a 是两個不同的资源;如果站点又做了自動解碼或重寫,實际生效的寫法可能更多。

常见的「一頁多址」来源

  • 中文路径有的用原文,有的用编碼,两種寫法都被内鏈引用過;
  • 空格出現 %20、加号、原始空格三種形態;
  • 參數顺序不同,或夹带了跟踪、排序、會话相關的參數;
  • 结尾带不带斜杠混用;
  • 大小寫不统一,尤其是自動生成或人工手寫的内鏈;
  • URL 里下划线和连字符混用;
  • 中文域名同时存在 Unicode 與 punycode 两種形式。

這些地址往往都能返回正常頁面,蜘蛛不會自動帮你合並,它更像是按遇到的每一個地址分別抓取、分別判断。结果是抓取量被拆散,索引里可能留下多條相似记錄。

把寫法收口到一處

比較稳妥的做法是先定一個規范寫法,再让所有出口都指向它:内鏈、站点地图、canonical、分享按钮、對外投放的連結,都用同一套编碼規則。中文路径如果没必要保留,換成拼音或英文词组,後續维護會省很多事。

  • 统一使用百分号编碼形式出現在頁面上,不要一半原文一半编碼;
  • 在服務器层面對非規范寫法做 301 跳轉,而不是只靠 canonical 兜底;
  • 確認服務器、CDN、應用框架是否會對 URL 做二次解碼或重寫;
  • 检查站点地图里的地址與頁面 canonical 是否逐字一致。

哪些符号最好別出現在 URL 里

井号(#)之後的内容不會發送给服務器,它只對浏览器有意义,所以不要把關键内容放在片段里指望蜘蛛讀到。與号、等号、百分号這些符号本身有语义,堆叠過多既难讀,也容易出現解析差异。跟踪參數、會话 ID、篩選排序參數尽量只用于頁面交互,不要寫進内鏈和站点地图。

一個頁面只留一個規范地址,其余寫法都用跳轉收口,比事後在索引里清理要轻松得多。

自查时可以看這几個地方

  1. 在服務器日誌里检索带 % 的請求,統計哪些编碼地址被蜘蛛訪問過,再和真實頁面列表對照;
  2. 用索引狀態工具或站内检索,確認同一内容是否對應多個 URL;
  3. 抽查首頁、栏目頁、内容頁的内鏈,看编碼寫法是否统一;
  4. 检查站点地图與 canonical 的寫法是否完全一致,包括大小寫與结尾斜杠;
  5. 如果使用中文域名,確認對外引用的是同一種形式。

URL 規范不是一次性的工作,站点改版、栏目調整、运营添加連結时都可能重新引入新的寫法。把它当成常規检查項,比等收錄對不上再回头排查要省力。