做站点运营,重复内容往往不是别人抄了你的文章,而是同一个页面自己长出了好几张面孔:带斜杠的、不带斜杠的、全大写的、带 index.html 的。访客点哪一条都能打开,看起来没毛病,但站内链接、sitemap、外链各自指向不同版本时,流量和统计就被分摊到了几个地址上。
一个页面裂成多个地址的三种来源
先把来源列清楚,再谈怎么统一。多数站点跑不出下面三种情况:
- 尾斜杠差异:/about 和 /about/ 在常见的服务器配置下都能返回 200,两个地址各自可访问。
- 大小写差异:/News/ 和 /news/ 在 Linux 环境下是两个不同路径,风格不统一的内链会把同一个栏目拆成两份。
- 默认文档差异:/ 和 /index.html、/index.php 同时可访问,首页于是有了好几个入口。
尾斜杠:写内链时随手加不加的问题
尾斜杠本身没有对错,问题在于全站写法不统一。编辑在正文里手动插入链接时加了一个斜杠,模板输出的导航又没加,列表页和详情页各写各的,同一个地址就出现了两种形态。这类分叉在服务器日志里通常表现为:同一个路径的两条记录都持续有请求。
如果服务器对非规范版本做了跳转,多一次 301 不算大问题;但如果两个版本都能直接返回 200,就等于把内容主动复制了一份。
大小写:Linux 服务器不会替你纠正
Windows 环境下的站点迁移到 Linux 后,这个问题最容易冒出来。本地测试时访问 /News 和 /news 都能打开,搬到 Linux 上却只有其中一种能正常返回,另一种给了 404 或跳转。运营层面要注意的是:导航、面包屑、相关推荐、历史文章里的人工链接,是否都用了同一种大小写习惯。
默认首页:/ 和 /index.html 的关系
首页是可以被多个地址指向的。有的模板在 logo 上写死 /index.html,有的在 RSS 或分享按钮里输出带文件名的地址。对访客没有区别,但对统计工具来说,这是两个来源。建议统一用根路径 / 作为首页地址,其余写法一律跳转到它。
一次可执行的自查流程
- 从 sitemap 导出全部地址,先按规则做一次归一化:去掉尾斜杠、统一小写、去掉默认文档名,看归一化之后还剩多少条,差出来的部分就是潜在分叉。
- 随机挑 20 条内容页,手动交换尾斜杠与大小写各访问一次,记录哪些返回 200、哪些返回 301、哪些直接 404。
- 翻站点日志,重点找同一路径的两种写法都被大量请求的情况,这通常说明站内链接或外链写法不统一。
- 检查首页与栏目页输出的链接:导航、面包屑、分页、文章底部的相关阅读,格式是否一致。
- 核对 sitemap、canonical、RSS 以及社交分享按钮给出的地址,是否都属于同一个版本。
统一之后要跟着做的事
确定规范版本只是第一步,真正见效靠的是执行彻底:
- 定一个版本:带尾斜杠或不带,选一个,写进编辑规范里,让所有人都照这个来。
- 用 301 收敛:非规范版本跳转到规范版本,不要用 302,也不要用前端脚本跳转。
- 同步输出端:内链、sitemap、canonical 一并改成规范写法,避免一边跳转一边还在生产旧地址。
- 保留老地址的跳转:历史外链带来的旧写法,让它继续跳,不要图省事直接 404。
尾斜杠选哪一种都行,真正的标准只有一条:全站上下、站内站外,说的都是同一个地址。
收尾
这类问题的麻烦之处在于它从不报错,页面能打开、收录似乎也正常,只是权重和点击被悄悄分摊到了几个地址上。运营上花的成本不高,定期把内链和 sitemap 的写法过一遍,比事后补救轻松得多。改完之后别急着看结论,先在日志里观察一段时间,确认非规范版本的请求逐步转向规范版本,再继续下一轮结构梳理。