做站的时候,URL 往往是最後才被認真對待的部分。栏目名直接寫中文、頁面标题拼進地址、從別處複製来的連結带着空格和 & ,這些寫法浏览器都能正常打開,但在抓取和收錄环节會带来一些不必要的麻烦。需要先明确一点:問题不在于“中文 URL 一定不被收錄”,而在于同一份内容可能因此产生好几個地址。
URL 里的字符要先经過编碼
URL 中允许直接出現的字符是有限的一批。中文、日文、空格、引号等都要先做百分号编碼(percent-encoding),才能在地址栏和請求里稳定传輸。浏览器通常會在複製或發起請求时自動帮你轉換,于是同一個頁面可能出現两種寫法:一種顯示為中文,另一種是 %E4%B8%AD 這样的编碼串。
對用戶来说两者等價,對搜尋引擎和日誌分析来说,它們首先是两個不同的字符串。如果站内不同位置分別用了這两種寫法,就等于把連結和訪問指向了两個地址。
几類容易出問题的字符
- 空格:被编碼成 %20,肉眼很难發現,從表格或文档里粘贴連結时最常见。
- #:後面的内容属于片段标识,不會發送给服務器,用在路径中間會让服務器收到一個被截断的地址。
- ? 和 &:是查询參數的起止符号。本来想表達頁面名,寫成 a&b 就會被解析成两個參數。
- 中文與全角符号:编碼後長度變長,連結在分享、贴到论坛或聊天工具时容易被截断或二次轉义。
- 大小寫:URL 路径在多數服務器上区分大小寫,/Page 和 /page 可能是两個地址。
收錄环节真正要担心什么
搜尋引擎一般能正常處理编碼後的 URL,也會把中文形式的連結和它的编碼形式對應起来。所以單看一個中文 URL,通常不是收錄的直接障碍。
問题出在重复和分散上。同一篇内容,如果站内連結用编碼形式、sitemap 用中文形式、外鏈又是另一種轉义寫法,蜘蛛就會按多個地址去抓。结果是抓取预算被摊薄,頁面之間的信号被拆開;如果 canonical 也没有统一,索引里最终留下哪個版本就更不确定。
另一類影响出現在日誌和工具报表里。同一個頁面在不同来源下寫成不同字符串,統計时會被拆成好几行,看起来像是一批低價值地址,排查时容易绕遠路。
把地址收敛到一種寫法
- 新建頁面时,路径尽量用英文單词、拼音或數字 ID,避開中文、空格和标点。
- 站内所有連結、導航、分頁、面包屑统一使用编碼後的形式,不要一部分用中文一部分用编碼串。
- 對已经存在的多種寫法,選一個作為規范地址,其余用 301 跳到規范地址。
- canonical 指向規范地址,並保證 sitemap、内鏈、canonical 三處寫法一致。
- 检查外鏈和已分享出去的地址,如果發現大量指向非規范形式,可以在服務器端做统一跳轉。
自查顺序
如果怀疑 URL 字符影响了收錄,可以按這個顺序看:
- 在日誌或抓取工具里搜尋同一個頁面的不同寫法,看是否被当成多個地址抓取。
- 對每個頁面確認唯一的規范地址,检查 canonical 與 sitemap 是否一致。
- 用站内搜尋或爬取工具找出带空格、未编碼中文、重复參數的連結。
- 检查服務器是否對大小寫、尾斜杠、编碼差异做了统一跳轉。
URL 字符本身很少直接决定收錄與否,它更多是通過“同一内容出現几個地址”来間接影响抓取和索引。把它当成規范化問题来處理,比纠结该不该用中文 URL 更有用。