网站收录

中文路径、空格与百分号编码: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 的位置列出来,再统一,比反复提交要省事。

统一之后看什么

观察日志里规范地址的抓取频次是否上升、非规范地址是否逐渐减少,再隔一段时间看索引里保留的是哪一条。这个过程依赖爬虫自己的抓取安排,不会立刻见效,也不保证一定按预期收敛。如果长期两个地址都还在,可以回头查一查是否有外部链接仍指向非规范版本,或者页面上还残留着旧写法。