两个网址,正文一字不差

这次问题发生在桐灼自己的官网。检查时,我们把 `/about/`、`/services/`、`/insights/` 等目录式 URL,分别与对应的 `.html` 版本放在一起看。逐对比对后,正文相似度是 1.0000。也就是说,对这些成对的网址而言,差别不在正文,而在访问同一份正文所用的地址。

接着看 canonical,冲突就更清楚了:目录式版本指向自己,`.html` 版本也指向自己。两个页面内容一样,却分别声明自己是应当采用的版本。我们在记录中把它称作官网自己跟自己抢,并不是因为看到了某个排名变化,而是因为站内对同一份内容给出了两套互相冲突的网址信号。

当时还看到另一处不一致:sitemap 里的 URL 形态,和站上导航使用的形态不同。把页面、导航、sitemap 放在一起看,问题就不是某一处 canonical 写错了那么简单。访客从导航看到一种地址,sitemap 提供另一种地址,而相同正文的两个版本又各自指向自己。站内没有把“这一页到底用哪个网址”说清楚。

我们沿着哪几处核对

这次自查不是先挑一个标签改掉,而是先确认重复是否真实存在。我们逐对比对目录式 URL 与对应的 `.html` 版,确认正文一字不差,再看两边的 canonical 指向。只有把这两件事放在一起,才能看清冲突:如果只看到两个网址,不能据此认定正文重复;如果只看到各自指向自己的 canonical,也看不出它们指向的是同一份内容。

随后,我们把 sitemap 中的 URL 形态与站上导航对照。这样核对的原因很直接:页面上的声明、站内导航给出的入口、sitemap 提供的网址,都是这次同一页多网址问题的一部分。只盯住页面源码,容易漏掉导航和 sitemap 仍在使用不同形态这件事;只改 sitemap,也不能让另一个相同正文的网址消失。

这几处核对下来,处理对象就明确了:不是重写 `/about/`、`/services/`、`/insights/` 等页面的正文,而是给相同内容的网址定下统一的入口,并让站内提供的网址与这个入口一致。正文既然逐对相同,问题的重心就在 URL 形态和站内信号上。

为什么不能只改 canonical

canonical 是页面对规范网址的声明。若只在页面上把它改成同一个指向,两个网址本身仍然存在,也仍然可以分别作为入口。对于这次官网的问题,仅改声明,还没有处理目录式 URL 与 `.html` 版并存的状态;sitemap 与导航形态不一致的情况,也不会因为页面标签改了就自动消失。

因此,这次采用的收口方式放在服务器层:用 301 把重复的网址形态收至统一入口,同时把 sitemap 改成静态直出。前者处理同一份正文对应两个可访问网址的问题,后者处理 sitemap 提供哪种网址的问题。它们针对的是不同位置的冲突,不能拿其中一项替代另一项。

这里也有一个边界:301 收口不是说以后遇见两个看起来相似的页面就合并。这次之所以按重复网址处理,依据是逐对比对的正文相似度 1.0000,以及两个版本各自指向自己的 canonical。换一组页面,若正文或页面用途不同,不能直接照搬这个判断。

这次留下的处理边界

这次诊断能确定的结果,是官网存在正文完全相同的两套 URL、相互冲突的 canonical,以及 sitemap 与导航的网址形态不一致;对应的修法,是在服务器层做 301 收口,并把 sitemap 改成静态直出。我们不把这些处理动作写成排名、引用或流量上的结果。仅凭这次记录,也不能把后续表现归因到某一次改动。

对桐灼来说,这件事提醒我们:检查官网内容能否被正确识别,不能只看文章写了什么。相同正文落在不同网址上时,还得看访问入口、canonical、导航和 sitemap 有没有把同一页指向同一个地方。桐灼(淄博)网络科技有限公司做全域 AI 搜索的 GEO 优化时,也可以从这样的站点核对入手,先把企业自身网址与内容之间的冲突查清,再讨论内容如何呈现。