发现站内出现重复内容时,很多人的第一反应是加 canonical 或者直接 noindex。但在动手之前,先判断重复发生在哪一层更重要——不同层级的重复,成因和处理顺序完全不同,用错手段常常是白费力气,甚至把原本正常的页面挡在索引之外。
第一层:完全重复,同一份内容挂在多个 URL 上
特征是整段正文、标题、结构几乎一字不差,只是访问地址不同。常见来源有:
- 同一页面同时能被 www 与非 www、http 与 https 打开;
- 带与不带结尾斜杠、大小写不同被当成不同地址;
- 列表页通过参数翻页或排序,生成了内容几乎一致的副本;
- 站内复制粘贴做测试,忘了删除或没做跳转。
这一层的处理最干净:先统一地址,再谈索引。能 301 的就 301,让所有变体指向唯一的规范地址;确实无法跳转(比如追踪参数必须保留)时,用 canonical 声明主版本。注意 canonical 是建议而不是命令,只有在页面本身可正常访问、且主版本也真实存在的前提下才有意义。
第二层:近似重复,内容被改写或拼接
这一层藏得比较深。正文可能换了开头结尾、调了段落顺序、替换了部分同义词,但主体信息高度重合。常见来源:同一篇稿件在不同栏目各发一次;产品页的规格段落大量共用;聚合页把摘要拼在一起,跟原文形成竞争。
判断方法不是靠工具跑一次相似度就够了,而是要看用户搜索这个问题时,期望看到哪一个页面。如果两个页面满足的是同一个搜索意图,就应该合并成一个;如果满足的意图不同(例如一个是产品介绍,一个是选购指南),保留两个反而合理,此时要做的是把各自的差异部分写清楚,而不是硬塞 canonical。
合并时优先做的事
- 选一个主版本,把其余版本里真正有价值的信息补进去;
- 旧地址做 301 跳转到主版本,不要只是删掉;
- 更新站内链接,让后续抓取路径直接指向主版本;
- 观察一段时间,确认索引里的版本逐步替换。
第三层:模板重复,批量生成的相似页面
这类页面单看每一页都不算抄,但几十上百页放在一起,除了名称、价格、地区等少数变量外几乎没有区别。常见的有:筛选组合页、空结果的标签页、只有一条内容的作者页、按时间自动生成的归档页。
处理原则是先问一句:这一页有没有独立被搜索的价值。
- 有明确搜索需求的筛选组合(比如品牌加品类),可以保留,但要保证有足够的结果数量,并让搜索引擎抓到稳定入口;
- 结果很少甚至为空的组合,通常不必要被索引,可以在服务端返回合适状态,或用 robots 规则收敛;
- 纯粹给用户做导航用的列表,用 noindex,follow 保留链接传递,比彻底屏蔽更合适。
处理顺序:先规范地址,再判断意图,最后决定取舍
把三层叠在一起处理,最容易出的错是:一边加 canonical,一边又让参数页大量被抓,结果索引里的版本反复横跳。比较稳妥的顺序是:
- 先做 URL 层净化——统一协议、域名、尾斜杠、大小写,消除纯技术性重复;
- 再按搜索意图分组,判断近似重复该合并还是该保留差异;
- 最后处理模板页,决定哪些进索引、哪些只留链接;
- 每一步都留出观察周期,不要同一天改三件事,否则出问题时分不清是谁引起的。
重复内容本身不是惩罚项,它的问题是让搜索引擎难以判断该展示哪一个版本,从而稀释了页面的表现。处理的终点不是消灭重复,而是让每个有价值的搜索意图都对应一个清晰的页面。
最后提醒一点:不要指望改完立刻看到索引变化。索引更新是渐进的,与其每天刷新报告,不如把注意力放在内链是否都指向了主版本、旧地址是否还会被外部引用这些更容易控制的事情上。