站点运营

站点运营:URL 大小写与尾部斜杠自查,别让同一个页面变成好几个地址

同一篇内容出现大小写、尾部斜杠、www 等多种写法时,搜索蜘蛛会把它们当成不同地址,抓取和数据统计都会被分散。这篇文章讲怎么从日志、站内链接和 sitemap 里找出这些变体,如何定一个主形式并用 301 统一,以及改完之后该观察什么。

站点运营

站点运营:URL 大小写与尾部斜杠自查,别让同一个页面变成好几个地址

很多站点排查抓取问题时,会先去看链接、sitemap 和 robots,却忽略了一个更底层的问题:URL 本身的形式并不统一。同一篇内容,可能同时存在带 www 和不带 www、大写和小写、带尾部斜杠和不带尾部斜杠等好几种写法。对访客来说它们长得差不多,对搜索蜘蛛来说却是几个不同的地址,抓取预算、外链权重、数据统计都会被摊薄。

URL 为什么会分叉

分叉通常不是有人故意做的,而是历史遗留和分工不同造成的。

  • 建站时用了混合大小写的目录名,后来改版又改成全小写;
  • CMS 生成的列表页带尾部斜杠,详情页不带;
  • 运营在文章里手写链接,随手复制了浏览器地址栏里的那个版本;
  • 不同渠道的推广链接、外链、二维码指向了不同变体;
  • 服务器对大小写不敏感,几种写法都能返回 200,问题就被掩盖了。

最后一点是关键:只要服务器把各个变体都当成 200 正常返回,这个问题就不报错,只会慢慢积累。

先摸清现状:变体到底有哪些

从服务器日志里找

把一周左右的日志按请求路径去重、排序,重点关注含大写字母的路径、结尾斜杠形式,以及重复出现的追踪参数。如果同一篇内容对应多条路径且都返回 200,基本可以确认存在分叉。

从站内链接里找

用站内爬取工具跑一遍,导出所有被链接到的 URL,按大小写和斜杠形式分组。站内链接是自己完全可控的部分,也是最该先统一的部分。

从 sitemap 里找

sitemap 里如果混着两种写法,等于主动告诉蜘蛛这里有两个地址。这个位置问题往往最集中,改起来也最直接。

定一个主形式,再统一

原则很简单:每类内容路径只保留一种写法,其它写法一律 301 到主形式。需要明确下来的包括:

  1. 域名层:是否带 www、是否强制 HTTPS,只留一个;
  2. 路径层:是否全站统一小写;
  3. 结尾层:目录页用不用尾部斜杠,全站一致;
  4. 参数层:能去掉的追踪参数尽量去掉,必须保留的配合 canonical 处理。

定好之后要同步修改的地方不止一处:站内链接、导航与页脚、sitemap、canonical 标签,以及能联系到的外部链接。只改其中一处,蜘蛛仍可能从别的地方抓到旧形式。

几个容易踩的坑

  • 用 302 代替 301。临时跳转传递的信号更弱,也容易被反复抓取,能用 301 就用 301。
  • 重定向链拉得太长。大写版本先跳小写,再跳去带斜杠的版本,链路越长越容易在中间断掉。
  • canonical 指向一个还需要跳转的地址。规范地址最好是直接返回 200 的最终形式。
  • 在大小写敏感的服务器上改错。Linux 环境下 /News/ 和 /news/ 可能是两个真实目录,改链接前先确认实际文件路径,别把页面改成 404。

改完之后看什么

统一 URL 形式不是一次性动作,改完要观察一段时间:日志里变体请求是否在减少,301 是否被正常跟随,有没有冒出新的 404。收录量和排名短期内不会立刻变化,看抓取路径是否收敛更实际。

URL 形式统一属于地基类的工作:做的时候看不出明显效果,不做的时候,很多抓取和统计问题都找不到干净的原因。