很多站点在服务器上其实只有一份内容,但在 URL 层面却存在好几个看起来都对得上的地址:带 www 和不带 www、末尾有斜杠和没斜杠、路径里大小写不同。这些地址返回同样的页面,用户也能正常打开,因此很容易被忽略。但对搜索蜘蛛来说,它们是不同的 URL,抓取和后续处理都会被分散。
同一份内容为什么会有多个地址
原因多数来自历史遗留,以及不同人不同时期的操作习惯差异:
- 导航、面包屑、正文内链分别由不同的人编写,写法不统一;
- 页面模板输出的链接带尾斜杠,而手工插入的链接不带;
- 服务器(尤其是部分 Windows 环境或 CDN 配置)对路径大小写不敏感,/About 和 /about 都能正常返回;
- 外链、二维码、推广物料里使用了不同写法。
当这些变体同时被蜘蛛发现,就会出现同一份内容被反复抓取、抓取预算被无谓消耗的情况;如果每个变体都被独立处理,统计报表里同一篇内容的流量也会被拆成几份。
自查:先把变体找出来
建议按下面的顺序走一遍,不需要额外工具也能开始:
- 看抓取日志:筛选状态正常的请求,把同一路径的不同大小写、带不带尾斜杠的请求单独列出来,按请求量排序。
- 搜站内链接:用站内搜索或全局查找,检查导航、面包屑、列表页、正文里的链接写法是否统一。
- 看外部呈现:用 site: 指令或第三方工具,观察同一内容是否以多个地址出现。
- 手动试:把关键页面 URL 改一下大小写、去掉或加上尾斜杠,看服务器返回的是正常页面还是跳转。
尾斜杠:目录还是文件,需要定一个规矩
尾斜杠本身没有绝对的对错,关键是全站一致。常见两种做法:
- 目录式:/seo/ 表示栏目,/seo/guide 表示具体页面;
- 文件式:所有页面都当作文件,统一不带尾斜杠。
选定一种之后,另一种写法用 301 永久重定向指过去,不要用 302,也不要让两个版本都返回正常页面。同时注意跳转只做一次,避免叠成链条。
大小写:不要依赖服务器的宽容
不少服务器会把 /News/2024 和 /news/2024 当成同一个文件,但 URL 规范中路径部分通常是大小写敏感的。这意味着换一台服务器、换一次配置,原本能打开的地址可能就变成 404。
相对稳妥的做法是:路径统一使用小写字母,单词之间用短横线分隔,尽量避开下划线、空格和中文。已经上线并被外链引用的大写地址不要直接删掉,用 301 逐个指到小写版本。
协议与主机名也要一起看
除了路径,还有两层经常被遗漏:
- 协议:http 与 https 只保留一个,另一个 301 到规范版本;
- 主机名:example.com 与 www.example.com 二选一,另一个同样 301。
协议、主机名、路径这三层叠加起来,最容易产生同一个页面好几个地址的问题,检查时要放在一起看,而不是只盯路径。
几个容易踩的坑
- 用 JavaScript 或 meta refresh 做大小写跳转,蜘蛛不一定完整执行;
- 两个版本都保留,并且各自都有站内链接,等于主动告诉蜘蛛两边都重要;
- 只在站点地图里写规范地址,站内链接却乱七八糟,效果会打折;
- 改完不复查,过一段时间模板更新又把老写法带了回来。
规范化的目标不是多做一个技术动作,而是让全站对同一个页面只保留一个明确地址。前提是站内链接、重定向、站点地图三处口径一致。
这件事很难一次做完就不再管。模板改版、栏目调整、运营同事手工加链接,都可能重新引入新的变体。把它放进每次上线前的检查清单,比出问题后再逐个排查省力得多。