网站收录

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 规范不是一次性的工作,站点改版、栏目调整、运营添加链接时都可能重新引入新的写法。把它当成常规检查项,比等收录对不上再回头排查要省力。