canonical你说了不算:132个首页有23%自相矛盾

canonical你说了不算:132个首页有23%自相矛盾
张文保 86 分钟阅读 2,625 阅读
本文目录
  1. 同一个首页,会对自己的地址做几次声明?
  2. 一个页面能声明自己地址的六个位置
  3. 各个来源的覆盖率
  4. 这几处声明分别被谁读
  5. 读者不同,所以没人负责让它们一致
  6. og:url这个字段,多数人只用对了一半
  7. 先把测量口径钉死
  8. base href为什么是干净的零
  9. 那6个一个声明都没有的站
  10. 这次测量的边界在哪里,哪些结论不能外推?
  11. 只测了首页
  12. 只采了一次,而且只从一个出口
  13. 不比较语义,只比较字符串
  14. 这份数据能支撑的那一句话
  15. 为什么用这批样本,而不是随机抽
  16. 三次测量用的是同一批站,这件事本身有用
  17. 把宽容度一层层放开,一致率涨到77%就再也不动了
  18. 一层一层松开规则
  19. 这把尺子为什么值得抄走
  20. 末尾那个斜杠到底要不要紧
  21. 第0层那37个站,做对了什么
  22. 这把尺子还能量什么
  23. 29.4%这个数字,对外该怎么说
  24. 归一化也会归过头
  25. 剩下那23%的真分歧,都长什么样?
  26. 配对分歧率排行
  27. 为什么最后一行只有2.2%
  28. 为什么排在最前面的都跟hreflang有关
  29. 分歧率要和覆盖率一起读
  30. 和实际服务地址比,才是真正的体检
  31. 为什么没有一对是零
  32. 声明来源越多,越容易打架吗
  33. canonical自指率92.6%,那9个不自指的站分别错在哪?
  34. 先看自指率
  35. 九个不自指的站,四种毛病
  36. 那两个带443端口的,我特意去核对了
  37. 模板变量没渲染这类错,怎么防
  38. A/B测试留下的残骸
  39. 首页到底要不要写自指的规范网址
  40. 三十秒自查自指
  41. 为什么hreflang的默认版本和结构化数据最容易打架?
  42. 12条分歧,形态高度一致
  43. 两个团队,两套主页的定义
  44. 多语言站的地址为什么特别容易拼错
  45. 先统一哪一处
  46. 这12个站的行业分布说明了什么
  47. 默认版本到底该指向哪
  48. 多语言站还有一个额外的风险
  49. 81.8%的首页,你输进去的地址不是它最终服务的那个
  50. 跳转是常态,不是例外
  51. 跳转链上还藏着别的东西
  52. 一个可以马上做的检查
  53. 跳转链的四种常见形态
  54. 裸域名还是带www,到底怎么选
  55. 跳转链每多一跳,损耗在哪
  56. 跳转链该被记下来
  57. 11个站的首页根本没有规范网址标签,会怎么样?
  58. 没有声明,接收方就自己定
  59. 为什么共用过停放页会导致这种结果
  60. 新站上线时该做的三件事
  61. 参数地址是最容易被忽略的那份证据
  62. 那11个站有什么共同点
  63. 新站上线的时间线,大概长这样
  64. 它为什么必须自己选一个?
  65. 接收方面对的是一堆证据,不是一条指令
  66. 两个并列字段就是采信型的标志
  67. 能控制的和不能控制的,得先分清
  68. 投入和产出之间没有确定的时间关系
  69. 七份证据,权重各不相同
  70. 站点地图这份证据被低估了
  71. AI答案里的那个官网链接,取自哪一份
  72. 为什么加大声明力度反而会把事情弄糟?
  73. 常见的三种错误反应
  74. 怎么找出那份竞争性证据
  75. 消除的手段有三种
  76. 一个真实的处置顺序
  77. 一份地址声明对齐清单,怎么跑?
  78. 五步,一个页面十分钟
  79. 全站怎么抽样
  80. 做成例行检查的两个触发点
  81. 把三项检查合成一张表
  82. 用什么工具跑
  83. 报告怎么写才有人改
  84. 交给别人做的时候,怎么验收
  85. 什么时候该停手
  86. 最后一个数字
  87. 常见问题解答
  88. 搜索平台里显示的规范网址和我写的不一样,是不是我写错了?
  89. 末尾那个斜杠到底要不要紧?
  90. 为什么hreflang的默认版本和其他声明最容易打架?
  91. 首页没有规范网址标签会出什么问题?
  92. 发现选定的规范网址指向一个陌生域名,我该做什么?
  93. 多写几个地方声明同一个地址,是不是更保险?
  94. 地址里那个443端口是怎么来的?
  95. 这套对齐检查要不要全站都跑?
  96. 规范网址和og:url不一致,严重吗?
  97. 怎么判断一个问题属于采信型而不是另外两种?
  98. 权威参考资料

摘要:把132个独立站首页对自己地址的所有声明抠出来,逐对比较。严格按字符串比,全部声明完全一致的只有29.4%;只放宽一条规则,忽略末尾那个斜杠,立刻跳到74.6%;再忽略www、再忽略协议、再忽略参数和大小写,最高只到77.0%就不动了。也就是说,这些页面自相矛盾的地方里,四分之三只是一个斜杠,剩下的23%是真分歧,怎么放宽规则都消不掉。分歧最集中的一对是hreflang的默认版本和结构化数据里的地址,41个可比对的页面里有13个对不上。

先说一个让人心里一沉的场景。你接手一个新客户的站,博客刚上线还没被收录,你打开搜索平台的网址检查工具想看看进度,结果那一栏写着“谷歌选定的规范网址”,后面跟着一个你从来没见过的域名,看着还挺像垃圾站。

这不是假设,2026年8月13日有位从业者在社交平台上晒过这么一张截图,完整经过见Search Engine Roundtable关于选定的规范网址指向垃圾站的报道。谷歌那边的回应是:有时候几个域名共用过同一个停放页或者过渡页,就容易出现这种情况,建议过几周再看看会不会变。

新站迟迟不被收录还有别的成因,页面不被Google收录的急救手册按症状分诊列过一遍。

这句回应里藏着本文要讲的全部内容。注意那个动词——选定。不是“你声明的规范网址”,是“它选定的”。这两个字段在同一个界面上并排放着,一个写你说的,一个写它选的,而它们经常不一样。

这就是第三种病。前两篇讲过另外两种:一种是东西根本不在你交出去的字节里,另一种是东西在但对方那次请求没拿到。这一种最麻烦:对方拿到了,读懂了,然后用了自己的判断。

它到底按什么选,Google选择Canonical URL的9大决策逻辑拆过完整判据。

上一篇换了7种身份各要一次,robots.txt说允许GPTBot仍有10个站进不去

那一篇量的是同一批站的正文可读字符,132个独立站首页有28个是空壳

三种病的药方互为毒药。缺失型你去补内容,送达型你去查通路,采信型呢?绝大多数人的第一反应是把声明写得更用力一点——再写一遍、写得更绝对、多加几个地方声明同一件事。这个动作在采信型面前不但无效,还经常帮倒忙,因为对方不采信的原因通常不是没看见,而是它同时看见了好几份互相矛盾的证据,只好自己挑一份

所以这篇文章不讲规范网址标签怎么写,那种教程遍地都是。它想量一件几乎没人量过的事:一个真实的网站首页,到底对自己的地址做了几次声明,这些声明互相打架的比例有多高。

样本还是那132个国际化独立站首页,跟前两篇同一批,这样三层结论可以互相印证。

基础写法不在本文范围内,Canonical URL是什么有完整的设置指南。

提前说一句结论,免得读到一半失去耐心:这些页面在地址这件事上自相矛盾的地方,四分之三只是一个末尾斜杠,无伤大雅;但剩下那四分之一是真的在说两件事,而且它们的所有者八成不知道。

还有一件事得先讲清楚,不然后面容易读偏。本文不讨论规范网址标签该怎么写,也不讨论多语言标签的语法。这篇文章只关心一件事:同一份HTML里,那几处各自独立生成的地址,彼此对不对得上。语法全对、每一处单看都没毛病,合在一起仍然可以是矛盾的——这正是这类问题难被发现的原因。

同一个首页,会对自己的地址做几次声明?

先把要量的东西数清楚。

这两个指令能不能一起用,noindex和Canonical能同时用吗分了9种场景。

一个页面能声明自己地址的六个位置

很多人以为地址声明只有规范网址标签一处,实际上一个现代电商首页通常同时用了三到四处,而且它们分属不同的系统、由不同的模块生成。这几处大多写在link元素上,MDN关于link元素与rel属性的条目把canonical、alternate、hreflang这几种关系的写法列在了同一页。

来源写在哪谁生成的它想告诉谁
rel=canonical头部link标签SEO模块或主题模板搜索引擎:这一页的正式地址
og:url头部meta标签社交分享模块社交平台:分享出去用哪个地址
hreflang的默认版本头部link标签多语言模块搜索引擎:语言匹配不上时去哪
结构化数据里的url脚本块里的JSON结构化数据插件搜索引擎与AI:这个实体的官网
base href头部base标签前端框架浏览器:相对路径从哪算起
服务器实际服务的地址跳转之后的最终地址服务器与边缘规则所有人:你实际站在哪

结构化数据这一层怎么落地,结构化数据Schema怎么配合SEO落地附了常见避坑。

最后那一行是这篇文章的锚。前面五个都是声明,是页面在说话;最后一个是事实,是服务器在做事。做对齐审计的时候,永远拿事实那一行当基准,别拿任何一个声明当基准。

各个来源的覆盖率

132个首页里,各来源出现的比例是这样的:

事实这一行由状态码决定,HTTP状态码怎么影响SEO讲了301、302、404和410的选择。

来源出现的站数覆盖率
rel=canonical12191.7%
og:url9471.2%
结构化数据里的url8665.2%
hreflang的默认版本6448.5%
base href00.0%

规范网址标签的覆盖率最高,91.7%,符合预期,它是这行的标配。base href则是干净的零——132个站没有一个用它,这个标签在现代前端里基本退休了。

更有信息量的是每页同时存在几个来源:6个站一个都没有,9个站只有1个,29个站有2个,54个站有3个,34个站有4个。

哪些标签还值得用,网页语义化HTML改造按8类标签评过。

不同页面类型的配法不一样,各类页面的meta robots和canonical配置按5类拆过。

也就是说,88个站在同一个页面里对自己的地址说了三遍以上。说三遍本身不是问题,问题是这三遍由三个互不通气的模块生成,而且没有任何一处校验它们说的是不是同一件事。

这几处声明分别被谁读

要理解它们为什么会打架,得先知道它们各自是给谁看的。这一点比语法重要得多。

地址结构本身也有讲究,电商网站为什么爱用扁平URL有10000个站的实测。

规范网址标签的读者主要是搜索引擎的索引系统。它在做的事情是把内容相同的一批地址归成一组,然后挑一个当代表,只有这个代表会出现在搜索结果里,其余的把权重让给它。

og:url的读者是社交平台的抓取器。你把链接贴进社交平台或者即时通讯工具,对方会去抓这个页面,用这个字段决定卡片上显示哪个地址、点击跳到哪里。它跟收录基本无关,但跟分享后的实际落点强相关。

归不到一起就成了索引膨胀,索引膨胀的诊断与处置给了决策矩阵。

分享出去之后的可见性是另一套打法,Search Everywhere全渠道实战讲了怎么铺。

hreflang那一组的读者也是搜索引擎,但走的是另一条链路:语言与地区匹配。它回答的是同一份内容有哪些语言版本、匹配不上时去哪一版。

结构化数据里的地址,读者这两年变多了。除了搜索引擎的富媒体展示,各类AI答案系统在整理实体信息时也会读它。当一个AI答案里出现某个品牌的官网链接,那个链接有不小的概率就是从这个字段取的。

这一组标签的完整写法,国际化SEO和hreflang怎么做有避坑清单。

它对AI搜索到底有没有用,结构化数据对AI搜索的实测给了官方说法与数据。

最后,服务器实际服务的地址,读者是所有人——包括那些根本不解析HTML的系统,比如链接检查器、广告平台的落地页审核、以及各种把地址当字符串存起来的地方。

读者不同,所以没人负责让它们一致

把上面这一段连起来看,问题的根就露出来了。

落地页审核读的是另一份东西,广告文案原料全在落地页上讲了它的取料方式。

这五处声明服务于五拨不同的读者,因此在组织里通常也分属不同的人:做搜索的管第一处,做社媒的管第二处,做多市场运营的管第三处,做数据与富媒体的管第四处,做运维的管第五处。

每个人都在自己那一处写下了正确的答案,而没有任何一个人的职责是让这五个答案彼此相等。

跨语言的实体对不上是同一类协作问题,国际化SEO最难的不是hreflang列了五大根因。

这也解释了为什么这类问题在小站上反而少见——小站上这五处很可能是同一个人配的,或者干脆由同一个主题模板一次输出。规模越大、分工越细,打架的概率越高。本文数据里那些声明来源最多的站,恰恰也是分歧最集中的那一批。

og:url这个字段,多数人只用对了一半

五处声明里,og:url是最容易被当成配置项随手填掉的一个,值得单独说两句。

大站的审计要成体系,企业网站SEO审计框架给了检查表。

它的覆盖率71.2%,仅次于规范网址。但它的作用跟收录基本无关,它决定的是社交分享出去之后的落点:卡片上显示哪个地址、点开跳到哪里、以及那些统计分享数的系统按哪个地址计数。

最后那一点是很多人没想到的:如果同一个页面在不同时期用不同的地址被分享出去,那些分享计数是分开算的,不会合并。对做社媒投放的独立站来说,这意味着你的分享数据被拆成了几份。

参数怎么打才不乱,UTM链接构建器规范附了SEO避坑清单。

另一个常见错法是把它填成站点首页而不是当前页面。有些主题的默认设置就是这样,结果每一篇文章分享出去,卡片上的地址都是首页。这个错误在页面上完全看不出来,只有在分享的那一刻才暴露。

所以自查的时候,别只看它有没有填,要看它填的是不是当前这一页。把一篇文章分享到任意一个即时通讯工具里,看看弹出来的卡片指向哪,三秒钟就能验完。

主题默认值的坑不少,WordPress文章和页面怎么选讲了收录与权重的差别。

先把测量口径钉死

这类比较最容易在口径上出事,所以把规则先摆出来。

取值方式:规范网址标签取link元素的href属性原文;og:url取meta的content;hreflang取值为x-default那一条的href;结构化数据取顶层实体的url字段;最终地址取跟随全部跳转之后的那个地址。全部保留原样,不做任何清洗。

比较范围:只比较那些同时存在两个以上来源的页面,一共126个。只有一个声明的页面没什么好比的。

比较方法:把一个页面上所有存在的来源两两比,全部相同才算这一页一致。这是个很严格的判据,一处不一致整页就算不一致。后面会看到,正是这个严格性让分层放宽变得有意义。

base href为什么是干净的零

132个站零覆盖,这个结果值得单独说一句,因为它是这份数据里唯一一个百分之百确定的结论。

这个标签的作用是给页面里所有相对路径指定一个起点。它在早年很常用,因为那时候页面结构简单,用它能省掉一堆重复前缀。现在它基本消失了,原因有三个。

一是它的作用域太粗。它会影响页面里所有的相对地址,包括脚本动态插入的那些,一旦设错就是全页崩,而排查起来极难,因为出问题的地方和设置的地方隔得很远。

二是现代框架都有自己的路由和资源地址管理,不需要靠这个标签兜底。三是绝大多数站现在直接输出绝对路径,问题从根上就不存在了。MDN关于base元素的说明里也写着,一个文档里最多只能有一个这样的标签,而且它必须出现在任何相对地址被使用之前。

链接形态本身也影响权重传递,按钮链接和JS链接会稀释权重吗对比了4种形态。

这条结论对做审计有个用处:如果你在一个现代站上看到了这个标签,那它大概率是历史遗留或者某个老插件塞的,值得单独查一下它有没有在悄悄改写别的地址。

那6个一个声明都没有的站

另一头也得看。132个站里有6个首页一个地址声明都没有,既没有规范网址,也没有社交标签、多语言声明和结构化数据。

页面被悄悄改写的事真发生过,浏览器自动翻译把yes改成forks是一个实例。

这6个站不是简陋的小站,它们的首页HTML都在几万字节以上,视觉上做得相当讲究。它们只是把所有精力放在了给人看的那一层。

这种状态的实际后果,是这个页面的身份完全由接收方推断。推断的依据只剩下跳转终点、内部链接和外部链接。对一个只有一个首页地址、没有多余参数的站来说,这样其实也能工作;但只要出现第二个可达地址,风险就立刻实体化。

给机器看的那一层怎么量,语义化HTML到底影响AI抓取吗拿样本页跑过。

值得一提的是,这6个站里有几个是本文后面会提到的多语言大站。多语言站没有任何地址声明,是这批数据里我认为风险最高的一种组合。

这次测量的边界在哪里,哪些结论不能外推?

把局限性摆在前面说,后面的数字才好用。这一节不好看但必须有。

这些语言版本的实际待遇,hreflang写的语言版本只被当成规范页的别名有实测。

只测了首页

首页在地址声明这件事上是最特殊的一页。它的地址最短、被链接得最多、被人工检查过的次数也最多。所以这批一致率应该被理解成上限,不是平均值。

真正容易出问题的是商品页和分类页,它们数量大、由模板批量生成、经常带参数。一个模板上的地址拼接错误,在首页上可能看不出来,在十万个商品页上就是十万处不一致。

首页的特殊性还体现在别处,首页首屏从导航到分类区怎么设计讲了它的职责。

模板批量生成地址最怕失控,电商筛选器URL不爆炸的方案是一套8步流程。

这也是我建议做抽查而不是只测首页的原因。首页测出来是好的,不能推出全站是好的;首页测出来有问题,那全站一定有问题。

只采了一次,而且只从一个出口

所有请求在同一个时间窗内、从同一台位于中国的服务器发出。这个条件对做了地理分流的站影响很大。

上一篇量到过好几个站按请求方来源分发到不同的国家站。那意味着同一个页面的地址一致性,从不同出口测会得到不同的结果。这批数据只代表其中一个出口看到的样子。

还有一个时间维度的问题:地址声明会随发版变化。今天一致的站,下周上一个新插件就可能不一致。单次采样看不出这种波动。

分流出问题时怎么排,从DNS、线路到CDN的网络层排障给了顺序。

变更要有记录才查得动,SEO变更日志的企业站治理列了13类信号。

不比较语义,只比较字符串

这是最重要的一条边界。本文所有的一致与不一致,判断依据都是字符串比较加上分层归一化,不涉及任何语义判断。

所以有几类情况会被误判成不一致,而它们其实是合理的。比如多语言站的默认版本本来就不必等于规范网址,前面已经说过;比如某些站的结构化数据写的是品牌实体的官网而不是当前页面的地址,这在规范上也说得通。

我的处理办法是把这类情况留在数据里,但在解读的时候单独指出来。把合理的差异也算进去,会让分歧率偏高;但如果凭主观判断剔掉一部分,这份数据就没法被别人复现了。两害相权,我选了可复现。

这份数据能支撑的那一句话

把上面三条摆清楚之后,这批数字能支撑的结论其实只有一句:在只看首页、只从一个出口、只做字符串比较的条件下,一个页面内部的地址声明有23%存在无法用格式差异解释的分歧。

数据可复现有多重要,10条最佳实践清单里8条数字对不上是个反例。

这一句已经够用了。它不需要外推到全站,也不需要精确到小数点,它要说明的只是一件事:这个问题的规模比行业里默认的大得多。

为什么用这批样本,而不是随机抽

还有一个问法值得回答:为什么不随机抽一批站,那样不是更有代表性吗?

因为代表性要看代表谁。随机抽的样本代表的是整个网站群体的平均水平,而那个平均水平里包含大量个人博客、企业官网、几页纸的小站,它们的地址结构简单到不会有这个问题。把它们混进来,分歧率会被稀释得看不出问题,而稀释出来的那个数字对任何一个真实的独立站都没有参考价值。

这批132个站是按有独立品牌、有多语言版本、体量中大以上三个条件筛出来的。它们代表的是行业里做得比较认真的那一批,也就是很多人拿来当参照对象的那一批。

地址结构本身的9个细节,URL结构与slug优化讲了它怎么影响抓取。

所以读这些数字的时候要记住一件事:这不是平均水平,这是被当成标杆的那一批的水平。23%的真分歧出现在这样一批站上,含义比它出现在随机样本里重得多。

三次测量用的是同一批站,这件事本身有用

三篇文章、三个完全不同的问题,用的是同一个样本池,这不是省事,是有意为之。

好处是结论可以叠加。同一个站在三份数据里的表现能对上:那些首页正文几乎为空的站,往往也是没有地址声明的那一批;那些防护配置极严的站,往往也是地址结构最复杂的那一批。三层数据落在同一批对象上,才能看出这些问题不是孤立的,它们经常长在同一个站上。

更实际的一层好处是:它把三个抽象的判据变成了一套可以连起来跑的体检。抓一次首页,就能同时回答三个问题——字节里有没有内容、换个身份还拿不拿得到、页面对自己是谁说了几句话。

渲染模式决定字节里有什么,AI爬虫抓不到JS渲染的引用率实测做过对比。

这三件事在多数团队里是三个人分别在管,甚至根本没人在管。而它们其实共用同一个动作:把首页抓下来,认真看一遍它到底交出了什么。

把宽容度一层层放开,一致率涨到77%就再也不动了

这一节是全篇的尺子,也是我认为这次实验里最值得复用的方法。

体积这一头也要量,46个电商站的页面体积实测发现4个站的商品链接没被读到。

一层一层松开规则

直接问“这些声明一致吗”是问不出东西的,因为答案取决于你有多宽容。所以我把宽容度做成了阶梯,每一层只放宽一条规则,并且写明放宽的是哪一条。

层级放宽了什么全部声明一致的页面比例
第0层什么都不放宽,严格按字符串比3729.4%
第1层忽略末尾的斜杠9474.6%
第2层再忽略www前缀9676.2%
第3层再忽略http与https的差别9777.0%
第4层再忽略查询参数与片段9777.0%
第5层再忽略大小写9777.0%

口径变了数字就没法比,一条五年趋势线上有三处口径变更讲的是同一类问题。

这张表要横着读,读的是每一层比上一层多救回了几个站。

第0层到第1层,从37跳到94,一条规则救回57个站。这些页面自相矛盾的地方里,超过四分之三只是一个末尾斜杠。

第1层到第3层,一共只多救回3个。www救回2个,协议救回1个。

地址形式的选择会放大这类差异,网站URL用扁平还是层级含301改版实战。

第3层之后,再怎么放宽都是零。参数不救人,大小写也不救人。剩下那23%是真分歧,它们不是格式差异,是这些声明确实指向了不同的页面。

这把尺子为什么值得抄走

分层归一化这个做法,可以用在任何一个“到底一致不一致”的问题上,它比单个百分比有用得多,原因有三条。

第一,它把结论和口径绑在一起。29.4%和77.0%都是对的,区别只在你认不认末尾那个斜杠。一个不写明归一化规则的一致率,是没法被别人复现的。

第二,它能自动分出问题的性质。跳变发生在哪一层,问题的性质就在那一层:跳在斜杠层就是模板拼接问题,跳在www层就是域名规范化问题,跳在协议层就是历史迁移的残留。

判据写明白才有用,一个词值不值得单开一页用87个站的站点地图给了答案。

协议迁移的跳转怎么配,HTTPS 301跳转的双向实战有可直接抄的配置。

第三,也是最要紧的一条:它能告诉你放宽到什么程度就没用了。那条曲线一旦走平,说明剩下的都是真问题,再优化你的比较逻辑也是浪费时间。这个平台期的位置,比曲线本身更有价值。

末尾那个斜杠到底要不要紧

既然它一个人就贡献了57个站的差异,得单独说两句。

对搜索引擎来说,根域名后面那个斜杠通常不构成两个不同的地址,主流搜索引擎会把它们当同一个。所以这57个站的差异,绝大多数不会造成实际的收录问题。

但它会造成另外两个麻烦。一是对比困难:你自己做审计的时候,工具报出一堆不一致,你得逐个确认是不是斜杠问题,很浪费时间。二是它是一个信号:同一个页面上的两个模块,连末尾斜杠这种事都没对齐,说明它们之间确实没有任何共享的地址生成逻辑。今天差一个斜杠,明天上多语言的时候就会差一个语言前缀。

归并结果在报表里怎么显示,Google索引覆盖的8种状态讲了每种的含义。

层级前缀的影响,目录层级URL对SEO有何影响给了6招优化。

所以我的建议是:斜杠层面的不一致不用当故障处理,但值得当成技术债记下来。修它的成本很低,通常就是在一个地方统一生成地址,然后所有模块引用它。

第0层那37个站,做对了什么

严格比字符串就完全一致的有37个站。翻了一遍它们的共同点,答案很朴素。

第一个共同点是地址简单。这37个里的绝大多数,首页地址就是带www的域名加一个末尾斜杠,没有语言前缀、没有地区路径、没有参数。地址越简单,能写错的地方越少。

第二个共同点是声明来源少。它们里有不少只有两三个来源,而不是四个。来源少不代表做得好,但确实降低了打架的概率——两个人吵架的可能性总比四个人低。

架构决定地址复杂度,独立站网站架构怎么搭讲了抓取深度。

第三个共同点才是真本事:那些既有四个来源、又严格一致的站,几乎都是把地址集中在一处生成的。你能从字节里看出来,四处写的字符串一模一样,连大小写和斜杠都分毫不差,这种整齐不可能是四个模块各写各的凑出来的。

这也就给出了唯一有效的解法:把当前页面的规范地址做成一个函数,所有需要输出地址的地方都调用它。这个改动在多数系统里是半天的活,但它一劳永逸。

重写规则也该集中管,.htaccess的六层综合治理给了可版本化的写法。

这把尺子还能量什么

分层归一化不只能用在地址上。凡是遇到“两边到底一不一致”的问题,都可以照着搭一遍。

比如比对商品标题在站内和在渠道上的一致性:第0层严格比,第1层忽略空格差异,第2层忽略标点,第3层忽略品牌前缀。跳变发生在哪一层,就知道问题出在录入、模板还是渠道映射。

再比如比对价格:第0层严格比,第1层忽略货币符号写法,第2层忽略千分位,第3层允许一分钱的误差。如果第3层还是对不上,那就是真的不一样,不是格式问题。

商品在渠道上的身份还有另一套标识,跨境电商GTIN怎么申请讲了它的作用。

定价本身怎么定,从成本加成到价值定价的决策框架是另一篇。

关键在于每一层只放宽一条规则,并且写清楚放宽的是什么。一次放宽三条,你就永远不知道是哪一条救回了那些样本。这是我从这次实验里拿到的最通用的一条方法。

29.4%这个数字,对外该怎么说

做审计报告的人会遇到一个现实问题:这一堆数字里,该把哪一个写进结论。

只写29.4%是不诚实的,因为它把一大堆无害的斜杠差异算成了问题,听起来像天塌了。只写77.0%也不够,因为它把真问题的规模说小了,而且掩盖了那57个站的技术债。

我的写法是三句话:严格比只有29.4%一致;其中绝大多数差异只是末尾斜杠,放宽这一条之后升到74.6%;再怎么放宽最高只到77.0%,剩下的23%是真分歧。三句话缺一不可,缺了第一句显得问题小,缺了第三句显得问题大,缺了中间那句就没人知道该先修什么。

这个写法还有一个附带好处:它自带优先级。斜杠层的问题批量修、成本低、优先级低;真分歧层的问题要一个一个查、成本高、优先级高。一个数字给不出优先级,一条曲线可以。

怎么把技术结论讲给非技术的人听,老板听不懂SEO错其实在我们给了讲法。

归一化也会归过头

分层归一化好用,但它有一个方向上的风险,得说清楚。

放宽规则的每一步,都是在假定某个差异无关紧要。这个假定在多数情况下成立,但不是永远成立。忽略末尾斜杠对根域名成立,对某些服务器上的路径就不一定;忽略大小写对域名部分成立,对路径部分不成立,因为路径在很多服务器上是区分大小写的。

所以我在做第5层的时候特意只对域名部分忽略大小写,路径保持原样。如果连路径大小写也忽略,一致率会更好看,但那个好看的数字里就混进了真实存在的问题。

参数带来的地址变体也是同一类,URL中srsltid参数的SEO影响给了4种处置。

更通用的说法是:归一化每放宽一条,都要能说出这条为什么在这个上下文里无害。说不出来的那一条就别放宽。这是分层法唯一需要小心的地方,也是它最容易被用坏的地方——为了让数字好看,一路放宽到什么都一致,然后得出一切正常的结论。

这个风险跟上一篇提过的那次尺子失效是同一类:判据本身没错,错在被用在了不该用的地方。一把尺子的诚实程度,取决于它有没有拒绝测量的能力。

剩下那23%的真分歧,都长什么样?

接下来看具体是哪几对在打架。

样本边界画错的后果,调研数据里没有一个非会员是个典型。

配对分歧率排行

把所有能配对的来源两两统计,在第1层的口径下,分歧率是这样的:

这一对可比对的页面对不上的分歧率
hreflang默认版本 与 结构化数据411331.7%
规范网址 与hreflang默认版本641828.1%
hreflang默认版本 与 实际服务地址641523.4%
og:url与hreflang默认版本481020.8%
规范网址 与 结构化数据851112.9%
结构化数据 与 实际服务地址861112.8%
og:url与 结构化数据67811.9%
规范网址 与 实际服务地址12197.4%
og:url与 实际服务地址9466.4%
规范网址 与og:url9022.2%

这张表从上到下读,是一条很清楚的线索。

为什么最后一行只有2.2%

先看最底下那一行。规范网址和og:url,90个页面里只有2个对不上,分歧率2.2%,是全表最低。

原因不难猜:这两个字段在绝大多数系统里是同一段代码生成的,或者一个直接引用了另一个。它们不是达成了共识,它们是同一句话说了两遍。

这条给审计带来一个实用提示:如果你的站这两个字段不一致,那问题一定不小,因为连最容易一致的一对都出事了。值得优先查。

同一套模板里的分页也共用这套逻辑,Shopify集合页分页SEO实操讲了canonical怎么设。

报表里怎么看出这类问题,GSC的数字为什么人人都读错逐项拆过。

为什么排在最前面的都跟hreflang有关

再看最上面四行,全部涉及hreflang的默认版本。这个字段跟谁比都容易打架,跟结构化数据比31.7%,跟规范网址比28.1%,跟实际地址比23.4%,跟og:url比20.8%。

根源在于这个字段的语义跟其他几个不一样。规范网址回答的是“这一页的正式地址是哪个”,而hreflang的默认版本回答的是“语言都匹配不上的时候把人送到哪一版”。前者是身份,后者是兜底策略,它们本来就不必是同一个地址。

问题在于这个“本来不必”在实践中被滥用了。多语言模块通常由另一个团队或者另一个插件负责,它按自己的逻辑挑一个兜底版本,而完全不知道页面上还有别的地方在声明身份。

身份和意图是两回事,搜索意图到底有几种讲了5种类型。

插件各管一段最容易出事,Shopify博客标签页SEO优化讲的是权重稀释。

更要命的是,兜底版本经常被设成某个具体国家的版本。后面会看到实例,有的站默认版本指向芬兰站,有的指向英国站,有的指向欧盟站,而同一个页面的结构化数据写的是裸域名。两句话都合语法,但拼在一起就是在说这个网站有两个主页。

分歧率要和覆盖率一起读

这张表有个陷阱,不说清楚容易读反。

看最上面那一行:hreflang默认版本与结构化数据,41个页面里13个对不上,31.7%。这个比例很高,但分母只有41——因为只有41个页面同时具备这两个来源。

再看倒数第三行:规范网址与实际服务地址,121个页面里9个对不上,7.4%。比例低得多,但分母是121,覆盖了绝大多数站。

多语言内容在AI检索里的处境,多语言AI可见性怎么做讲了翻译内容为什么吃亏。

比例高说明这一对容易打架,绝对数大说明这个问题影响面广,两个视角要分开用。做优先级排序的时候看绝对数,做根因分析的时候看比例。

还有一个更实用的读法:把分歧率高的那几对当成一份预警清单。你的站如果同时具备hreflang默认版本和结构化数据这两处声明,那就有将近三分之一的先验概率对不上,值得主动去查一遍,而不是等出事。

指标怎么排优先级,网站收录速度实操指南用三平台数据做过对比。

和实际服务地址比,才是真正的体检

表里有三行是拿声明去和服务器实际服务的地址比,这三行的含义跟其他行不一样,值得单独拎出来。

声明与声明之间打架,说明的是内部不一致,问题在协作。声明与事实打架,说明的是这个页面在撒谎——不是故意的,但效果一样。

三行的数字是:规范网址与实际地址7.4%、结构化数据与实际地址12.8%、多语言默认版本与实际地址23.4%。规范网址那一行最低,说明它是被维护得最认真的一个字段,这符合预期。

收录、排名、流量卡在哪一层,这三件事要分开查给了分层方法。

og:url与实际地址的分歧是6.4%,只有6个页面,是全表倒数第二低。这个数字有点出乎意料——一个跟收录无关的字段,反而比结构化数据更贴近事实。

原因大概是它通常和规范网址同源生成,跟着后者一起对齐了。这也从侧面说明,只要地址是在一处生成的,跟着它输出的字段就都是对的;一处生成解决的是一批问题,不是一个。

结构化数据还能表达链接关系,用SignificantLink和RelatedLink提升内链效果是另一种用法。

为什么没有一对是零

整张表里最低的一对是2.2%,没有任何一对做到零。这件事本身就说明了点什么。

2.2%对应的是2个页面,而这两个页面的规范网址与og:url不一致,几乎可以断定是两处分别硬编码的结果——有人在模板里手写了一个,在插件设置里又填了一个。

这类硬编码是所有地址不一致里最难发现的一种,因为它不遵循任何规律,不会在同一批页面上同时出现,只在某一页上错。批量审计能抓到它,逐页人工检查反而抓不到,因为没人会去检查一个看起来一切正常的页面。

声明来源越多,越容易打架吗

这是个很自然的疑问,数据也支持它,但支持的方式有点意外。

按来源数量分组之后:只有2个来源的29个站,一致率明显更高;有4个来源的34个站,一致率最低。这符合直觉——参与的人越多越难对齐。

但更值得注意的是分歧的性质变了。来源少的站,出问题多半是格式差异,放宽一层就救回来了;来源多的站,出问题往往是真分歧,怎么放宽都救不回来。

原因也不难理解。当一个页面同时有四处声明的时候,说明这个站做了多语言、做了社交、做了结构化数据,也就意味着它是个有多个市场、多个版本的复杂站。而复杂站的地址本来就有多个合理的候选,选哪个是个真问题,不是拼错了斜杠那么简单。

所以这条规律的实用含义是:如果你的站声明来源多,别指望靠一次格式清洗解决问题,那些分歧多半需要一个一个去做业务判断。反过来,如果你的站只有两三处声明却仍然不一致,那大概率是个便宜的修复。

canonical自指率92.6%,那9个不自指的站分别错在哪?

这一节全是实例,每一条都回到原始字节核对过,零推测。

先看自指率

规范网址标签最常见的用法是自指,也就是首页的规范网址就写首页自己。121个有这个标签的站里,严格按字符串比,自指的有96个,79.3%;忽略末尾斜杠之后是112个,92.6%。

另外有一个数字值得单独说:指向另一个域名的规范网址,一个都没有。跨域规范网址在技术上是允许的,但它风险极高,等于把自己这一页的权重让给别人。这批中大型品牌站里零出现,说明这条底线大家守得还不错。

标签页的地址最容易忘了自指,Shopify博客tag标签URL优化含301重定向实战。

把权重让给别人这件事,Google出站链接会损害SEO吗从链接图谱算过。

还有一个小发现:有一个站的首页写了两条规范网址标签,值相同。这在规范里属于未定义行为,搜索引擎通常会忽略全部或者取第一条。值相同所以没造成实际伤害,但它说明这个页面上有两个模块都在写这个标签,而它们互相不知道对方存在。

九个不自指的站,四种毛病

站点类型规范网址写的是服务器实际服务的是毛病
刀具品牌countryselector.canonical首页模板变量没渲染
健身器材品牌某个八月促销变体页首页把首页声明成了A/B变体
小家电品牌https:///www域名(三个斜杠)首页字符串拼接多了一个斜杠
时尚电商根路径一个二级路径声明与服务不同页
自行车品牌带国家语言前缀的路径根路径多了一层地区前缀
户外品牌以home.html结尾的路径目录形式的路径文件名与目录形式并存
家具品牌不带www带www域名规范化没做全
家具与美妆品牌各一不带端口号地址里带着443端口跳转时把默认端口写死了

插件互相覆盖是常态,WordPress标签相关文章实战记过一次反模式拆解。

逐条说几个最有意思的。

第一个是刀具品牌那条,原始字节是一个相对路径,文件名就叫“countryselector.canonical”。这明显是模板里的变量名没被替换掉,把变量名本身当成路径输出了。浏览器会把它解析成一个不存在的地址,而这个错误在页面上完全看不出来,因为规范网址标签本来就不显示。

第二个是健身器材那条。它的首页规范网址指向一个叫“八月促销变体”的地址。这大概率是A/B测试工具留下的:测试期间把首页换成了变体版本,收工时忘了把标签改回来。这个错误的性质比看上去严重,因为它等于在告诉搜索引擎:我的首页不是首页,那个促销页才是。

模板标签调用写错的形态类似,模板标签怎么调用有速查表。

实验期的数据也会骗人,A/B测试赢了上线却掉了问题出在那26天。

第三个是那个三个斜杠的。协议后面本该是两个斜杠,它写了三个。这种错误一眼就能看出是字符串拼接的时候,一边的变量自带了斜杠,另一边又硬加了一个。

那两个带443端口的,我特意去核对了

数据里有两个站的最终地址带着443端口。第一反应是我自己的抓取工具加的,那样的话这条数据就得作废。

这类脚本问题怎么自动化兜住,独立站服务器怎么用cron把运维自动化给了做法。

所以我把这两个站的跳转链原样打了出来。结果是:一个站返回301,响应头里的目标地址原文就写着带443端口的地址;另一个站先返回308跳到裸域名,再返回301,目标地址同样带着443端口。两个都是它们自己写死在跳转响应里的,不是抓取工具的产物。

443是加密连接的默认端口,写不写在语义上没有区别,RFC 3986定义的统一资源标识符通用语法里就把省略默认端口列为标准的归一化步骤之一。但作为字符串它就是不一样了,而搜索引擎处理地址的时候,很多环节是按字符串来的。一个多余的端口号,足以让同一个页面在某些系统里变成两个地址。

同一批站的响应头还量过别的,304状态码能省抓取预算测了142个站。

响应头这一层还有别的机关,HTTP响应头的X-Robots与Vary机制逐个讲过。

这件事也顺便说明了核对原始字节的必要性。如果我没去看那条跳转链,就会把自己工具的嫌疑当成事实写进结论里,这份数据就废了一角。凡是看着像自己工具造成的异常,一定要单独核一遍,因为它有一半概率不是。

模板变量没渲染这类错,怎么防

那个把变量名当路径输出的案例,看着离奇,其实是最常见的一类模板事故。

工具打架时该信谁,收录数据到底信site命令还是GSC给了三源校准法。

它的成因通常是变量名拼错、或者模板引擎的语法用错了一个符号、或者那个变量在这个页面的上下文里根本不存在。这三种情况下,多数模板引擎的默认行为是输出空字符串或者原样输出,都不报错。

危险就在这个不报错上。页面能正常打开,视觉上毫无异样,只有藏在头部的那一行字是错的。而头部这些标签恰恰是最没人看的地方。

标题标签也常踩这个坑,自定义title标签的5场景实战有代码。

防它的办法有三个,从便宜到贵。最便宜的是上线前跑一次头部体检,把几个关键标签的值打印出来人工扫一眼,三分钟。中等的是写一条断言:规范网址必须以协议开头且能解析成合法地址,不满足就构建失败。最贵也最彻底的是前面说的那个统一函数,从源头上不给手写留机会。

A/B测试留下的残骸

那个把首页规范网址指向促销变体页的案例,属于另一类事故:临时状态被永久化。

服务器层还有20项值得查,服务器配置对SEO的影响清单列全了。

A/B测试工具改页面的方式有两种。一种是客户端改写,脚本在浏览器里把内容换掉,这种通常不影响头部标签。另一种是服务端分流,直接给不同的人返回不同的页面,这种就会把整个页面连同头部标签一起换掉。

第二种更快也更利于收录,但它有个后遗症:测试结束之后,如果分流规则没有干净地撤掉,某些请求方还会一直拿到变体版本。而爬虫恰恰是那种最容易被规则遗漏的请求方。

做法上有一条硬规矩值得立:任何服务端分流的实验,实验期内变体页的规范网址必须指回原页,而不是指向自己。这样即使规则忘了撤,收录层面也不会出事。

顺便一提,这个案例里的变体页名字带着月份。也就是说这个测试至少是那个月做的,而标签一直挂到现在。促销早就结束了,它的名字还留在这个站对自己身份的声明里。

实验前先把测量框架定清楚,埋点之前先设计测量框架是同一个顺序问题。

首页到底要不要写自指的规范网址

既然92.6%的站都写了,这个问题好像不用问。但它值得问,因为理由不是随大流。

自指标签的价值不在于告诉对方这一页在哪,那件事跳转和链接已经说清楚了。它的价值在于把一堆你没预料到的变体地址收拢回来。

想想一个首页可能有多少个能打开的形式:带与不带www、带与不带末尾斜杠、带广告追踪参数的、带社交来源标记的、被人手工加了大写字母的、带一个无意义空参数的。这些形式里的每一个,只要能返回200,就是一个独立的候选地址。

而它们全都会输出同一份HTML,也就都会带上那个自指标签,指回同一个正版地址。一行标签,把无穷多个变体一次性收拢。这就是它真正的作用。

过滤器产生的地址最多,电商过滤器SEO实战对比了5类参数处理。

用robots去挡参数是另一条错路,robots.txt能禁止UTM追踪参数吗讲了危害。

反过来说,如果你的站严格保证只有一个可达形式,其余全部301过来,那这个标签的边际价值确实不高。但真做到这一点的站极少——本文数据里81.8%的首页最终服务的地址跟输入的都不是同一个,这已经说明地址形式的膨胀是常态。

所以结论很简单:写,而且写绝对地址。成本是一行,收益是把一类你永远数不清的问题一次性关掉。

三十秒自查自指

不需要工具,一条命令加一次肉眼比对就够。

先取事实:对首页发一次跟随跳转的请求,把最终地址记下来。再取声明:把页面源码里那一行规范网址标签抠出来。两个字符串并排放着看。

比的时候按三层看:完全一样,很好;只差一个末尾斜杠,记成技术债;差别不止斜杠,那就是本文说的那9个站里的一员,需要单独查。

这个动作最值得做的时机有三个:接手一个新客户的站时、自己的站换过模板之后、以及每次改完跳转规则之后。三十秒,能挡住的是那种能挂几个月没人发现的问题。

顺带一提,本文那9个不自指的站,全都是行业里有名有姓的品牌。这个检查之所以没人做,不是因为它难,是因为它太简单了,简单到不像是一件需要专门去做的事。

为什么hreflang的默认版本和结构化数据最容易打架?

上一节留了个尾巴,这一节把这12条分歧全部摊开。

同一批站的另一项体检,211个站有152个拿不出图标也是这种简单到没人做的检查。

12条分歧,形态高度一致

这12条我逐个回到原始字节核对,全部为真,没有一条是解析错误。而且它们的形态整齐得惊人:

行业hreflang默认版本指向结构化数据写的是
骑行服饰根路径中文站路径
快时尚欧盟子域名www主域名
母婴用品美国英文版路径裸域名
香氛品牌欧盟英文版路径裸域名
厨房小家电英文版路径中文版路径
清洁电器全球子域名www主域名
储能设备美国站路径(带双斜杠)中国站路径
园艺工具芬兰语版路径裸域名
数码配件裸域名中文站路径
骑行装备英国英文版路径裸域名
水晶饰品英文版路径中文版路径
充电配件阿联酋英文版路径裸域名

同类核对方法也能用在竞品研究上,产品评测只做SEO就够了吗讲了深度研究法。

形态只有两种。一种是默认版本指向某个具体的国家或语言版本,而结构化数据写裸域名或者www主域名;另一种更麻烦,两边各指一个不同的语言版本,一个说英文站是主的,另一个说中文站是主的。

顺带说一个细节:储能设备那个站的默认版本地址里带着一个双斜杠的路径。这又是一处字符串拼接问题,和前面那个三斜杠是同一类毛病,只不过换了个位置。这类拼接错误在多语言站上出现的频率明显更高,因为地址是由好几段变量拼起来的,每一段的斜杠归属都要有人拍板。

多版本内容的组织逻辑,AI搜索时代内容优化的底层逻辑给了5步框架。

换域名时的拼接问题更集中,换域名后台跳转登不上记了三种改法。

两个团队,两套主页的定义

这12条分歧的成因,我认为是一个组织问题,不是技术问题。

多语言模块的负责人在回答一个运营问题:一个说着我们不支持的语言的用户来了,把他送到哪里最不容易流失。答案通常是英文站或者主要市场站。

结构化数据的负责人在回答一个品牌问题:我们这个品牌的官网地址是什么。答案通常是裸域名,因为那是印在名片和包装上的那个。

两个答案在各自的语境里都对。但它们被放进同一份HTML之后,就变成了两个互相矛盾的身份声明,而读这份HTML的机器不知道这两句话是两个部门说的。

要说明的是,这两个字段本来就不必相同,这不是硬性错误。真正的风险在于当同一个页面上有三四个来源、彼此各指一处的时候,接收方必须自己挑一个作为准。挑的过程你参与不了,结果你也控制不了。

多语言站的地址为什么特别容易拼错

这12条里出现了两处斜杠拼接错误——一个三斜杠,一个双斜杠路径。这不是巧合。

单语言站的页面地址通常是两段:域名加路径。多语言站至少是四段:域名、语言码、地区码、路径,有时候还要加上货币或者渠道标识。每一段之间的斜杠归谁管,就是一个需要被明确规定的事。

常见的错法是这样:域名变量自带末尾斜杠,拼接的时候又硬加了一个,于是出现双斜杠;或者反过来,两边都以为对方会加,结果一个都没有,两段直接粘在一起。

更麻烦的是,这类错误在浏览器里往往看不出来。浏览器对多余的斜杠很宽容,双斜杠路径照样能打开,页面正常显示。只有当这个地址被当成字符串去比较、去归并、去做规范判断的时候,多出来的那个字符才会变成一个真正的分歧。

防它只有一个可靠办法:地址拼接必须走同一个函数,函数内部统一规定每一段的斜杠归属,其他地方一律不许手工拼。听起来是老生常谈,但这批中大型站里做到的还不到三分之一。

先统一哪一处

如果你的站已经有了这个问题,改造有先后。

先统一规范网址和og:url,这两个通常最容易,改一处就行,而且它们的分歧率本来就低,改完能立刻拿到一个干净的基准。

再统一结构化数据里的地址。这一步的难点是那个字段的语义容易被理解成品牌官网而不是当前页面地址,所以改之前要先跟负责的人对齐它到底该写什么。我的建议是:页面级实体写当前页地址,组织级实体写裸域名,两者分开,别混在一个字段里。

面包屑也是一处地址声明,面包屑导航SEO怎么做讲了四种类型。

实体之间的关系怎么搭,Schema的graph与知识图谱讲了做法。

最后才动多语言声明。它牵涉的运营逻辑最多,改动前要跟负责各市场的人确认兜底策略。这一步经常改不动,改不动也没关系——只要另外三处是齐的,剩下一处的分歧对结果的影响就小得多。

这12个站的行业分布说明了什么

把这12个站的行业排一下:骑行服饰、快时尚、母婴、香氛、厨房家电、清洁电器、储能设备、园艺工具、数码配件、骑行装备、水晶饰品、充电配件。

看不出行业集中,但看得出另一个共同点:它们全都是做多个国家市场的品牌,而且大多数是在近几年才快速铺开市场的那一类。

这个共同点比行业更有解释力。一个站的地址结构,通常是在它只有一个市场的时候定下来的,那时候地址简单、声明也少。等到开第二个、第三个市场,语言前缀、地区路径、国家子域名一层层加上去,而最初那套地址生成逻辑没有跟着重构。

多市场该建几个站,出海该建一个大站还是多个品牌小站算过这笔账。

新市场的地址由新模块生成,老的声明还留在老地方。于是分歧不是某一天突然出现的,是随着市场扩张一点点积累的。

这一条对正在做多市场扩张的独立站特别有用:地址结构的重构窗口在开第二个市场的时候,不在开第五个的时候。第二个市场的时候改,成本是一个模板;第五个的时候改,成本是五套跳转规则加一次全站地址迁移。

默认版本到底该指向哪

既然这个字段是分歧的重灾区,那就把它该怎么设说清楚。

新市场的节奏怎么排,新品上市从蓄水到复盘的GTM框架是另一篇。

它的定义是:当访问者的语言和地区都匹配不上你声明的任何一个版本时,把他送到这一版。所以判断标准只有一个——对一个你完全不了解的陌生人,哪一版最不容易让他掉头就走。

常见的三种选法各有代价。选英文国际版最稳,代价是对已有明确主市场的品牌来说,可能把本该进主市场的人分流走了。选主市场版转化最好,代价是一个来自完全不相干地区的人会看到一堆他买不到的商品和一个不对的货币。选一个语言选择页最中立,代价是多一次点击,而且这个页面通常内容很薄。

陌生访客的意图怎么判断,看SERP后落地页要改成什么样给了7步。

我的倾向是选英文国际版,但有个前提:这一版必须是真的能下单的完整站,不能是个空壳。兜底页的价值在于它是一个能完成交易的落点,不是一个礼貌的转接台。

还有一条容易被忽略的:这个字段的值应该和规范网址体系兼容。如果你的默认版本指向某个具体语言版本,那那个版本的页面自己得有正确的自指标签,别让它既是别人的兜底又不承认自己是一页。

能不能完成交易还看支付,独立站支付方式怎么配按地区拆过。

多语言站还有一个额外的风险

顺着上一句往下说,多语言站有一处特别容易出事,而且出了事很难查。

正确的做法是每个语言版本的页面都自指:中文版的规范网址写中文版自己,英文版写英文版自己,然后靠多语言声明把它们串成一组。这样每一版都是独立的一页,各自可以被收录。

常见的错法是让所有语言版本都指向同一个主版本。写的人的想法通常是“这些是同一个页面的不同语言,应该归到一起”——听着很合理,实际后果是除了主版本之外的所有语言版本都放弃了自己被收录的机会。

每个页面类型该配什么,Shopify怎么给页面加结构化数据讲了128种类型怎么选。

这个错误的隐蔽之处在于,它在短期内看不出问题:页面都能打开,多语言声明也写了,报表上也没有报错。只有当你发现某个市场的自然流量一直起不来,去查那个语言版本的收录状态时,才会看到它被归并掉了。

判断方法很简单:打开任意一个非主语言版本的页面,看它的规范网址写的是自己还是别人。写的是别人,那就是这个错。三十秒能验完,但很少有人想到去验。

收录状态变化有时滞,已收录页面加noindex后多久消失做了6场景实测。

81.8%的首页,你输进去的地址不是它最终服务的那个

还有一层事实经常被漏掉:连你自己都不一定知道你的首页地址是什么。

跳转是常态,不是例外

132个能正常给出页面的首页里,97个是经过跳转才拿到的,占73.5%。而最终服务的地址与最初输入的地址不是同一个字符串的,有108个,占81.8%。

这两个数字要分开看。前者说的是发生了跳转,后者说的是跳转之后地址真的变了——包括加www、加末尾斜杠、加语言前缀、换成国家子域名这几类。

抓取报告里跳转类问题占多少,Google抓取报告怎么读给了占比与排查顺序。

81.8%意味着什么?意味着在这行里,你输入的地址和你实际拿到的地址不一样,是绝对的常态。那些声明字段如果是照着某个人记忆里的地址手写的,出错几乎是必然的。

跳转链上还藏着别的东西

这批数据里的跳转链,短的一步,长的三四步。步数多本身不算问题,但每多一步就多一个能写错的地方,前面那两个443端口就是在跳转链上写死的。

跳转配错就变成软404,GSC 404错误修复讲了排查实战。

多域名跳转怎么配才干净,多域名301跳转到主域名的完整配置有实例。

还有一类值得留意:跳转的目标随请求方变化。上一篇量到过好几个站,浏览器身份被送到中国站,搜索引擎身份被送到国际站。这种情况下,你的规范网址标签在两个不同的落点上会呈现出完全不同的一致性,而你从自己电脑上只能看到其中一种。

做审计的时候,最终地址这一列必须从真实的跳转链里取,不能用你输入的那个。这听起来是常识,但很多现成工具默认报的是你输入的地址。

中国这一侧的分流更复杂,中国搜索流量不是百度的天下拆了5个战场。

工具看到的和真实的可能不同,网页历史快照还能怎么查列了5个工具。

一个可以马上做的检查

打开命令行,对你的首页发一次跟随跳转的请求,把每一跳的状态码和目标地址打印出来,再把最终地址和页面里的规范网址标签放在一起看。

这个动作三十秒,能一次性回答三个问题:跳了几次、最后落在哪、声明的和落点是不是同一个。如果这三个答案里有任何一个让你意外,那就说明你对自己网站地址的认知已经过期了。

跳转链的四种常见形态

把这批站的跳转链归一下类,形态就四种,各有各的坑。

第一种是补全型:从裸域名跳到带www,或者从http跳到https,或者补上末尾斜杠。这一类最常见也最无害,只要声明字段写的是跳转之后的那个形式就行。

第二种是分地区型:根据来源把你送到某个国家站。这一类要小心,因为不同请求方看到的终点不同,你的声明只能对准其中一个。

第三种是路径迁移型:老地址跳到新地址。这一类的风险是链条会越接越长,改版几次之后可能变成三跳四跳,每一跳都是一次损耗。这类跳转应该用永久重定向,MDN关于301永久重定向的条目写明了它与临时重定向在缓存与方法保留上的差别。

按设备分流是同一类做法,JS判断移动端并自动跳转讲了它的SEO代价。

迁移后的层级关系要重新声明,Shopify博客多级面包屑导航给了3种方案。

第四种最少见也最麻烦:跳到一个功能页,比如国家选择页或者语言选择页。这种情况下你的首页实际上不是内容页,而是一个中转站,而中转站的内容通常很薄。本文数据里那个把变量名当路径输出的站,它的模板变量名恰好就叫国家选择器,多半就属于这一类。

裸域名还是带www,到底怎么选

这个老问题在这批数据里有个新角度。

导航把人送到哪一屏是同一类问题,类目导航改版做了三轮讲了那一屏缺什么。

从收录角度看,两者没有高下,选哪个都行,关键是选定之后全站统一。真正的差别在运维层面:带www的可以用别名记录,裸域名在很多解析服务上只能用A记录,切换服务商的时候会更麻烦一点。

这批数据里绝大多数站选了带www,少数几个选了裸域名,其中一个就出了前面那个家具品牌的问题:规范网址写不带www,服务器服务带www。这不是选错了,是选完之后没有把所有地方都改过来。

资源类型也跟这个选择有关,GSC网域与网址前缀资源对比给了6场景选型。

所以决定权其实不在选哪个,而在于你有没有一份清单,列出所有需要写死这个选择的地方:跳转规则、规范网址、站点地图、社交标签、结构化数据、内部链接、广告落地页、邮件模板里的链接。漏掉任何一处,都会在某个时刻变成一份竞争性证据。

跳转链每多一跳,损耗在哪

常有人问多一跳到底有没有代价。有,但不在你以为的地方。

邮件那一侧的链接也归它管,Flow和Campaign到底有什么区别讲了两者的分工。

权重传递的损耗这两年已经被官方多次淡化,正常的永久跳转基本不损失权重。真正的代价在另外三处。

第一是抓取成本。每一跳都是一次完整的请求往返,链条越长,抓完同样数量的页面需要的请求次数越多。对页面数量大的站,这笔账是实的。

权重从哪来,谷歌SEO外链建设的16种白帽做法讲了获取路径。

第二是延迟。用户端每一跳都要重新建连接、重新握手,在跨境网络条件下一跳可能就是几百毫秒。三跳跳完,首字节时间可能已经超过了大多数人的耐心阈值。

第三,也是跟本文最相关的:链条越长,中间某一跳写错的概率越高,而中间跳的目标地址几乎没有人会去检查。前面那两个带443端口的案例,一个就出现在两跳链条的第二跳上。

首字节时间怎么优化,TTFB怎么优化才不白费串起了缓存与抓取。

实践建议是把链条压到一跳。改版多次积累下来的老跳转,与其一层层接,不如定期把它们摊平成直接指向最终地址。这个动作在跳转规则文件里是一次批量替换,成本很低,但很少有人做。

跳转链该被记下来

还有一件几乎没人做但成本极低的事:把关键页面的跳转链定期记一份。

做法就是每周对首页和几个主要入口跑一次跟随跳转的请求,把每一跳的状态码和目标地址存成一行文本,带上日期。存三个月,你就有了一份跳转链的历史。

记录多了要管好,服务器日志怎么管才不爆盘有轮转方案。

这份历史的价值在出事的时候才显现。有一天某个页面的地址在搜索结果里变了,或者广告落地页开始报审核不通过,你打开这份记录,一眼就能看出跳转链是哪天变的、变成了什么。没有这份记录,同样的问题要靠回忆和猜测排查,通常要花掉半天。

它跟前一篇提到的身份可达性监测可以合并成同一个脚本:同一次请求,既记状态码和字节数,也记整条跳转链。多存两个字段而已。

11个站的首页根本没有规范网址标签,会怎么样?

反方向也得看。

没有声明,接收方就自己定

132个站里有11个的首页完全没有规范网址标签,覆盖百货、家居、快时尚、母婴、咖啡机几个大类,都不是小站。

没有这个标签不等于会出事。搜索引擎在没有声明的情况下会自己选一个作为规范版本,判断依据包括哪个地址被链接得更多、哪个跳转的终点、哪个内容更完整、哪个在站点地图里。选得对的概率其实不低,尤其是结构简单的站。

问题出在两种情况。一种是同一份内容有多个可达地址——带参数的、带追踪码的、带地区前缀的——这时候它可能选中你不想要的那一个。另一种就是开头那个案例:几个域名共用过同一个停放页或者过渡页,内容一模一样,它就可能把你的地址归并到别人那儿去。

选完还要分层,Google分层索引揭秘讲了三层的差别。

买域名前该查什么,域名生成器怎么用讲了命名策略与避坑。

为什么共用过停放页会导致这种结果

这个机制值得讲清楚,因为它解释了那张吓人的截图。

搜索引擎判断两个地址是不是同一个页面,用的是内容相似度。两个域名在某段时间里都指向同一个域名注册商的默认停放页,那段时间它们的内容是逐字节相同的。系统就会把它们归成一组,从组里挑一个当代表。

等你把新站上线了,你这个地址的内容变了,但归并关系不会立刻解除。它需要重新抓取、重新比较、重新分组,而这个过程是有滞后的。这也是官方建议“过几周再看”的原因。

这一条是采信型故障的典型特征:你改了,但它要等;等多久不由你定,而且没有任何进度条。

抓取频率能不能提,Google抓取预算优化的12项实操给了边界。

新站上线时该做的三件事

如果你正好在做一个新域名的站,这三件事能明显缩短那个等待期。

第一,首页和所有重要页面都写上自指的规范网址标签。它不是万能的,但它是你唯一能直接表达意图的地方。

第二,站点地图提交上去,并且确保里面写的地址和规范网址标签完全一致,包括末尾那个斜杠。站点地图是一份很强的信号,它和标签一致的时候,两份证据是叠加的;不一致的时候,是互相抵消的。

第三,尽快让新内容跟老的停放页产生足够大的差异。内容差异越大,归并关系解除得越快。这也意味着上线初期就该有真实的内容,别拿一个只有导航的骨架页占着。

这份文件写错的方式很多,Sitemap到底怎么写才不出错收了2400个站的坑。

内容要形成共识才被引用,AI搜索不引用你的共识层6信号给了90天路径。

参数地址是最容易被忽略的那份证据

没有规范网址标签的站,最大的风险来自参数。这一节单独说,因为它在电商站上普遍存在。

一个商品页可能同时有这些形式能打开:原始地址、带广告追踪参数的、带社交分享参数的、带站内搜索来源标记的、带筛选条件的、带排序方式的。它们的内容完全相同,地址各不相同。

每一个能打开的形式,都是一份独立的证据。你在广告里投了三个月带追踪参数的地址,那个形式被点击了几十万次,还被别人复制粘贴分享出去——从证据强度上说,它未必比你那个从没人链接过的原始地址弱。

处理办法按力度分三档。最轻的是保证所有参数形式都输出指向原始地址的自指标签,这样参数再多也归一。中等的是在服务器层把已知的无意义参数剥掉再跳转过去。最重的是干脆不产生这些地址,改用别的方式传递来源信息。

要提醒一句:不要用robots规则去屏蔽参数地址。屏蔽的后果是接收方读不到那些页面上的规范网址标签,反而没法把它们归并到正版上,问题会变得更难解决。这是一个经典的把采信型当送达型处理的错误。

那11个站有什么共同点

把这11个没有规范网址标签的站放在一起看,共同点比我预想的清楚。

筛选页该不该禁有判别法,电商筛选URL要不要写Disallow给了三类分法。

第一个共同点:它们里有好几个是本文前面提到的多语言大站,也就是说地址结构最复杂的那一批里,反而有几个连最基本的声明都没有。

第二个共同点更有意思:这11个里有几个的首页HTML本身就很薄,几千字节,内容基本靠脚本在浏览器里生成。这就跟前两篇的结论接上了——一个页面如果连正文都没在字节里,那它多半也不会在字节里认真声明自己是谁。

多市场要面对的不止一家搜索引擎,2026全球搜索引擎格局做了多平台拆解。

第三个共同点是它们大多有地区跳转。首页不是一个内容页,而是一个把你分流到某个国家站的中转站。中转站的模板往往是单独做的,很简陋,SEO模块根本没挂上去。

三条合起来指向同一个判断:缺失地址声明,很少是一个孤立的疏忽,它通常是首页架构本身有问题的一个症状。发现这一条,值得顺手去看看这个首页还缺什么别的。

新站上线的时间线,大概长这样

既然讲到新域名,把这条时间线摊开写一遍,省得干等着焦虑。

上线当天到第三天,通常什么都不会发生。这几天的任务是把该做的都做完:自指标签、站点地图、内部链接形式统一、内容填满。这三天做的事,决定了后面几周的走向,之后再补效果就差很多。

第一周到第二周,开始被抓取,但收录状态大概率还是模糊的。这段时间最容易做出错误动作——看到状态不对就去改标签,改完再等,等不到再改。忍住。

新站前期该干什么,零预算SEO增长的5个策略附了30天清单。

第二周到第四周,如果有域名共用历史这类问题,这段时间是它解除归并的窗口。判断依据是抓取记录:如果抓取频率在上升、抓到的页面数在增加,那就是在正常推进。

一个月之后还没有变化,才轮到重新排查。这时候排查的对象也不该是标签,而是那份竞争性证据到底还在不在。

这条时间线是个粗略的参考,具体快慢跟站的规模、内容更新频率、外部链接情况都有关。它的用处不在精确,在于给出一个心理上的锚——知道两周内没动静是正常的,就不会在第五天去做那个会重置周期的动作。

它为什么必须自己选一个?

讲完现象,回到机制。这一节是全篇的落点。

接收方面对的是一堆证据,不是一条指令

很多人对规范网址标签有个误解,以为它是一条命令。官方文档里其实写得很明白,它是一个强信号,不是指令。这一点在最早的规范里就定下来了——RFC 6596对canonical链接关系的定义用的词是偏好版本,而不是唯一版本。

接收方要做的是从一堆证据里选出最可信的那个。证据包括:你的规范网址标签、你的站点地图、你的内部链接指向、你的跳转终点、别人链接到你时用的地址、你的多语言声明、你的结构化数据。这七样里只有前两样是你明确写下的,其余五样都是你在无意中产生的。

另一份也常被误当成指令的文件,robots.txt写废了网站会从谷歌消失讲了它的真实约束力。

内链的形式也是一份证据,给内链加UTM参数为什么伤SEO讲了取舍。

当这些证据一致的时候,选择是显然的。当它们打架的时候,系统按自己的权重去评,而这个权重表你看不到。

本文的数据说明的正是这件事:23%的页面在给出互相矛盾的证据,而它们的所有者大概率不知道。

两个并列字段就是采信型的标志

怎么一眼认出你正在面对一个采信型问题?看官方界面上有没有两个并列的字段,一个记录你说的,一个记录它选的。

规范网址是最典型的一对:一栏叫“用户声明的规范网址”,另一栏叫“谷歌选定的规范网址”。这两栏并排存在,本身就是在告诉你,第二栏可以不等于第一栏。

你写的它可能改成的它依据什么改
规范网址标签它选定的规范网址跳转终点、内外链形式、内容相似度
页面标题搜索结果里显示的标题正文里的大标题、查询词、标题长度
页面描述结果里显示的摘要正文中与查询词相关的段落
商家名称展示出来的名称形式官网、其他平台上的写法一致性
结构化数据里的分类实际展示的富媒体类型字段完整度与页面内容匹配度

这张表里的每一行都遵循同一个逻辑:你提供的是一份候选,不是一个指令;对方在你的候选和它自己观察到的证据之间做选择。

识别方法也统一:凡是官方界面上把“你填的”和“实际的”分成两栏显示,或者措辞里出现选定、检测到、系统判定这类词,都属于这一类。

反过来,那些只有一栏的字段,比如robots指令、跳转规则、页面上真实存在的文字,基本都是指令型的,说了就算。分清哪些是指令、哪些是候选,比记住每个字段该怎么写更有用。

这个模式在别处也一样成立。页面标题你写一份,搜索结果里显示的可能是另一份;描述你写一份,摘要可能是它自己从正文里摘的;商家名称你填一份,展示出来的可能是它认定的另一个形式。凡是措辞里出现“选定”“检测到”“系统判定”这类词的字段,都属于这一类。

认出来之后,处置方式跟另外两种病完全不同:你不能直接指定结果,只能去改变证据的分布。

商家名称的展示形式也是它定的,112个独立站里17个在犯的双语重复是实测。

标题被改写的机制,title写了为什么被Google改写讲了截断与重复。

能控制的和不能控制的,得先分清

面对采信型问题,最耗人的不是修不好,是分不清哪些事根本不该花力气。

完全能控制的有四样:跳转规则、页面里的各处声明、站点地图、内部链接使用的地址形式。这四样加起来已经覆盖了证据里的大部分权重,而且改动成本都不高。

部分能控制的有两样:外部链接使用的地址形式、内容与其他页面的相似度。前者你能做的只是在给出链接时统一形式,别人怎么写你管不着;后者你能做的是让内容尽快变得独特。

哪些下滑不该算你的账,流量下降不等于SEO失败给了8个维度。

完全不能控制的有三样:对方的评估周期、对方的权重表、以及历史上这个域名发生过什么。开头那个案例里的域名共用历史,就属于这一类——你什么都没做错,你只是买了一个有前科的域名。

把三类分开之后,动作就清楚了:在四样完全可控的上面做到极致,在两样部分可控的上面做能做的,在三样不可控的上面只做一件事——等,并且记下开始等的日期。

域名本身的选择也有讲究,带连字符的域名到底伤不伤SEO讲了官方口径。

这个分类还有一个心理上的好处。采信型问题最折磨人的地方是没有确定的反馈,很容易让人不断折腾。知道哪些事已经做到头了,才敢停手。

投入和产出之间没有确定的时间关系

采信型还有一个让人难受的属性:滞后。

缺失型是阶梯式的,补一处多一处,改完刷新就能验证。送达型是开关式的,关掉就通,验证同样立刻。采信型两样都不是——你改完之后要等它重新抓取、重新评估、重新分组,而这个周期从几天到几周不等,取决于你的站被抓取的频率。

这个属性带来两个实际后果。一是不要在等待期里反复改,每改一次等于把评估周期重置一次。改完就停手,记下日期,两周后再看。

二是不要用短期数据去判断有没有效果。三天没变化说明不了任何事,因为它可能还没重新抓到那一页。

七份证据,权重各不相同

既然结果由证据决定,那就得知道哪份证据重。官方没有公布权重表,但从公开文档和大量案例里能推出一个大致的强弱顺序。

证据强度你能控制吗
301跳转的终点最强完全能
规范网址标签完全能
内部链接普遍使用的形式较强能,但要改很多处
站点地图里列出的地址完全能
外部链接使用的地址基本不能
多语言声明中偏弱
结构化数据里的地址

这张表有两个用法。

第一,当低强度的证据和高强度的证据打架时,通常不会翻盘,但会增加不确定性。结构化数据写错一个地址不太可能真的改变结果,但它会让本来清晰的信号变模糊。

第二,也是更重要的:最强的那份证据恰好是你最容易忘记的那一份。跳转规则往往是几年前配的,配的人可能已经离职,而它的权重比你精心维护的标签还高。做审计时先看跳转,再看标签。

站点地图这份证据被低估了

表里排中间的站点地图,实际使用中经常被当成一个纯粹的收录工具,忽略了它同时也是一份地址声明。

老配置该定期回看,Apache服务器怎么安全加固讲了从版本隐藏到访问控制。

你在站点地图里写的每一个地址,都是在说这个形式是正版。如果站点地图里写的带末尾斜杠,而规范网址标签写的不带,那你就自己给了两份互相打架的证据,而且两份都出自你手。

这类不一致极其常见,因为站点地图通常由另一个插件或者另一个脚本生成,它有自己的地址拼接逻辑。这又回到了同一个根因:地址不是在一处生成的。

所以对齐审计的最后一步永远是比对站点地图,而且要逐字符比,不要肉眼扫。肉眼扫是看不出末尾斜杠差异的,这也是为什么这类问题能长期存在。

站点地图自己生成也一样,免插件sitemap实战指南讲了分页与缓存策略。

AI答案里的那个官网链接,取自哪一份

这一节往前看一步,因为地址声明的读者名单这两年变长了。

当一个AI答案提到某个品牌并附上官网链接的时候,那个地址是从哪来的?可能的来源有三个:它抓到的页面里的结构化数据、它抓到的页面的实际地址、或者它从别的信息源里学到的那个地址。

三个来源里,结构化数据是唯一你能直接写死的那个。而它恰恰是本文那张证据强度表里排最后的一份。在传统收录的语境里它权重最低,在实体信息整理的语境里它反而是最直接的来源。

AI引用到底看什么,3000条数据揭开AI搜索引用的认知差做了实证。

这个错位有实际含义:同一个字段在两条链路上的重要性不一样,所以不能只按其中一条链路去决定怎么写它。

具体的建议是把两类实体分开写。描述当前这个页面的实体,地址写当前页;描述组织或者品牌的实体,地址写你希望被当成官网的那一个,通常是带www的裸首页。两个写在一个结构化数据块里没问题,写成两个并列的实体即可,别让它们共用一个地址字段。

另外要提醒的是,本文数据里结构化数据的覆盖率是65.2%,也就是有三分之一的站在这个字段上什么都没说。在传统收录时代这不算大事,在实体信息被大量整理的今天,它等于把这道题的答案权完全交给了别人。

为什么加大声明力度反而会把事情弄糟?

这是采信型最典型的误判动作,值得单独讲。

实体权威怎么建,AI搜索时代实体权威的四阶段协作框架给了路径。

常见的三种错误反应

发现它选的不是你写的,大多数人的第一反应会落在这三种里。

第一种是再声明一遍。既然它没听我的,那我多写几个地方,规范网址写、社交标签写、结构化数据也写。这个动作的实际效果,是把证据数量从三份增加到五份,而如果新加的这两份和已有的不完全一致,你反而制造了新的矛盾。

第二种是写得更绝对。把相对路径改成绝对路径,把参数全带上,把大小写统一。这些动作本身没错,但它们解决的是格式问题,而你面对的是真分歧。

第三种是反复提交重新抓取。这个动作除了重置评估周期之外,没有别的作用。

旧内容怎么改才有效,把旧版更新为AI搜索可信来源给了12步。

为什么这三种反应这么本能?因为在日常生活里它们通常有效。别人没听清,你就再说一遍、说大声一点、说得更肯定,这套办法对人管用。对一个从多份证据里做加权判断的系统,它一点都不管用,因为问题从来不是音量。

这也是我把这三种病分开讲的原因。缺失型和送达型都可以靠“做得更多”来解决——多补一处内容、多开一个白名单。只有采信型不行,它要的是做减法。在一个习惯了加法的行业里,减法是最反直觉的那个动作。

正确的动作只有一个:去找那份竞争性证据,然后消除它。不是加强你的声明,是让对方看不到别的选项。

怎么找出那份竞争性证据

按这个顺序找,命中率最高。

先看同一个页面上的其他声明来源。把本文列的那五处逐个抠出来放在一起比,这是最容易命中的一步,本文数据里23%的页面在这里就能找到问题。

再看这个内容有几个可达地址。带参数的、带追踪码的、大小写不同的、带与不带末尾斜杠的、分页形式的,逐个试一遍能不能打开。能打开的每一个,都是一份竞争性证据。

然后看内部链接。你自己的导航、页脚、面包屑、站点地图里,指向这个页面用的是哪个形式的地址。如果站内用的是A形式而标签写的是B形式,那是一份很重的反向证据。

站内搜索页就是典型的一批,站内搜索URL该Disallow吗对比了4种方案。

页脚这块地怎么用,独立站页脚不是杂物抽屉讲了它的收口作用。

最后才看外部因素:别人链接你时用的地址、有没有域名共用历史、有没有做过站点迁移。

消除的手段有三种

找到之后,处置手段按力度从轻到重是三种:改成一致、跳转过去、彻底不可达。

改成一致最轻,适合那些本来就该一致的字段,比如同一页上的几处地址声明。跳转过去中等,适合那些有历史原因存在的替代地址,让它们都301到正版。彻底不可达最重,适合那些纯属意外产生的地址,比如测试环境泄漏出去的那一套。

三种手段的共同点是:它们都在减少选项,而不是在加强主张。这是采信型问题的通用解法,也是它跟另外两种病最根本的区别。

测试环境泄漏怎么清,Staging站被索引后的8步清除给了四层防御。

一个真实的处置顺序

保哥去年处理过一个户外用品客户的类似情况,过程可以直接照搬,就不展开细节了,只讲顺序。

症状是某个分类页在搜索结果里始终显示成另一个带筛选参数的地址,标题和描述都是那个筛选版本的,看起来很像被降级了。

第一步不是改标签,是列可达地址。列完发现同一份内容有五个形式能打开:干净地址、带排序参数的、带每页数量参数的、带一个历史遗留的活动参数的、以及一个大小写不同的。

筛选和搜索结果页的落地问题,40个电商站的站内搜索页实测是同一类。

第二步查内部链接。结果很打脸:站内导航里那个入口用的就是带排序参数的地址,因为设计上希望用户进来默认按销量排。整站所有指向这一页的链接,用的都是那个参数版本。

第三步才明白发生了什么。规范网址标签写的是干净地址没错,但站内几百条内部链接都在投票给参数版本,而内部链接的证据强度比标签只低一档。两边打架,对方选了票多的那个。

第四步的处置是改内部链接,不是改标签。把导航入口改成干净地址,默认排序改成在服务端处理而不体现在地址上。改完之后大约三周,显示的地址换了回来。

这个案例里有两条经验值得记:一是错的地方和症状出现的地方经常不是同一处;二是等待期真的有三周,中间那两周什么都没发生,很容易让人以为改错了而去乱动。

一份地址声明对齐清单,怎么跑?

最后落到可以照着做的步骤上。

等待期里怎么验证,提示词级前后测实验框架讲了怎么设计对照。

五步,一个页面十分钟

第一步,取事实。命令行发一次跟随跳转的请求,记下每一跳的状态码和最终地址。这是基准,别用你输入的那个地址。

第二步,取声明。把页面源码保存下来,抠出规范网址、og:url、hreflang的默认版本、结构化数据里的url这四处。注意要看原始源码,不是浏览器渲染之后的,因为有些框架会在运行时改写它们。

第三步,做分层比对。先严格比,不一致的再忽略末尾斜杠比一次,还不一致的再忽略www比一次。记下它在哪一层变成一致,那一层就是问题的性质。

第四步,列可达地址。把这个页面所有能打开的地址形式列出来,逐个确认它们是不是都指回了同一个规范版本。

第五步,比对站点地图。确认站点地图里那一条和规范网址标签逐字符一致。

全站怎么抽样

一个页面十分钟,全站显然跑不完,所以抽样规则比跑得多更重要。

按模板抽,不要按流量抽。地址声明是模板层的东西,同一个模板生成的一万个页面,问题是完全一样的。所以先把站里的模板类型列出来——首页、分类页、商品页、内容页、专题页、搜索结果页,每类抽一个就够。

然后在每类里挑最复杂的那一个,不是最典型的那一个。带参数最多的、路径最深的、语言版本最多的那一个,最容易暴露拼接问题。典型页面往往是模板作者测试时用的那个,早就被检查过了。

抽样审计的完整方法,AI时代技术SEO的五个新层次列了42步。

最后补两个特殊对象:一个是最近上线的新模板,一个是从别处迁移过来的老页面。这两类是问题最集中的地方。

加起来大概八到十个页面,一个下午能跑完,覆盖的是全站绝大多数的地址生成路径。比起跑一万个页面拿到一万条重复的结论,这个投入产出比高得多。

做成例行检查的两个触发点

全站每页都跑不现实,选触发式更划算。

第一个触发点是上线新模板或者新插件。地址声明基本都是模板层的东西,改模板最容易一次性改坏几十个页面的一致性。

第二个触发点是上多语言或者开新市场。本文的数据已经很清楚了,分歧率最高的四对全部跟多语言声明有关。开新市场之前先把地址生成逻辑统一到一处,比开完之后再来对齐便宜得多。

把三项检查合成一张表

这三篇讲的三件事,实操上可以合并成一次抓取、一张表。

抓取只做一次:对目标页面发一次跟随跳转的请求,把每一跳和最终的HTML都留下来。这一份字节能同时喂给三项检查。

第一项是内容可读性:把标签剥干净,数一下剩多少可读字符。低于阈值就是空壳,这一项决定了后两项还有没有意义。

第二项是身份可达性:换两三个爬虫身份把同一个地址再要一次,比状态码和正文长度。有差异就是送达问题。

内容在哪一步丢的,搜索引擎抓取和渲染DOM分几步讲清楚了。

第三项就是本文这一项:把几处地址声明抠出来,跟最终地址做分层比对。

防护层怎么查,防火墙到底拦不拦得住AI爬虫拆过一遍。

三项跑完,一个页面十几分钟,输出是三行结论:它有没有内容、机器拿不拿得到、拿到之后认不认它说的身份。这三行合起来,基本覆盖了一个页面在机器那一侧可能出的所有基础问题。

交付的时候把三项并排放在一张表里,比分成三份报告有用得多——因为它们经常互相解释。一个页面同时在第一项和第三项上出问题,那多半是模板整个没做好,不是三个独立的疏忽。

这一项通常和抓取可达性放在同一张表里交付。原因是它们回答的是同一个问题的两个部分:机器能不能拿到你的页面,以及拿到之后认不认你说的那个身份。

用什么工具跑

不需要买东西,命令行加一个能解析HTML的脚本就够了,但有几个细节决定了结果准不准。

取源码要用跟随跳转的方式,并且记录整条链,别只要最后那一份。很多现成工具默认只给你最终内容,跳转链上的信息就丢了。

日志那一侧有现成工具,服务器日志分析工具教程讲了怎么读预算浪费。

解析要用真正的HTML解析器,不要用正则去抠标签。这批数据里有个站的规范网址标签中间插了一个额外属性,还有个站的标签闭合方式不一样,正则很容易漏掉或者抠错。

结构化数据要能处理嵌套。现在很多站用的是图结构,一个脚本块里放好几个实体,顶层的地址字段可能在第二层。只取第一个url字段是这类脚本最常见的错。

解析这件事有更稳的写法,5种PHP代码识别搜索引擎蜘蛛含反转换法。

嵌套结构怎么写才对,FAQPage结构化数据的8步实战有完整示例。

还有一条容易忽略:要看原始源码,不是浏览器渲染之后的。有些前端框架会在运行时改写头部标签,两者可能不一样,而搜索引擎和大多数抓取器读到的是前者。

报告怎么写才有人改

这类发现最容易被写成一堆没人看的技术细节,最后归档了事。有效的写法是三列。

单页应用的问题更集中,SPA站AI爬不到的真相对比了四种渲染模式。

第一列写事实:这一页的几处声明分别是什么,服务器实际服务的是什么,逐字符列出来,别做任何美化。

第二列写它落在哪一层:格式差异还是真分歧。这一列决定了优先级,也决定了归谁改。

第三列写具体动作:改哪个文件的哪一处,改成什么。不要写“建议统一地址声明”这种话,写“把主题模板里那一行改成调用规范地址函数”。

最后加一句预期时间:改完之后需要等两到三周才能看到变化,这段时间内不要反复调整。把这句写进报告,能省掉后面好几轮“怎么还没效果”的沟通。

交付物写成规范才不返工,内容简报怎么写才能一次到位是同一个思路。

交给别人做的时候,怎么验收

这类活儿经常外包给建站服务商或者代运营,验收的时候有几个问题值得直接问出口,因为它们不太好糊弄。

第一个问题:这个站的地址是在哪一处生成的?能指出具体是哪个文件、哪个函数的,说明确实动过手;答不上来或者说各个模块自己处理的,那就是本文说的那种状态。

第二个问题:末尾斜杠这件事是怎么定的?这个问题看着琐碎,但它是本文数据里最大的一块差异来源。一个连这个都没有明确约定的项目,其余的一致性多半是碰运气碰出来的。

第三个问题:多语言的兜底版本指向哪,为什么是它?答案里如果只有技术理由没有运营理由,说明这个值是插件默认给的,没人真的做过决定。

第四个问题:怎么验证改完之后生效了?期待的答案是一个可以复现的检查步骤,而不是一句我们会持续关注。能给出检查步骤,说明对方知道这件事需要等,也知道等完之后看什么。

四个问题不到十分钟,比看一份几十页的审计报告更能判断对方的水平。这不是刁难,是因为这几个问题的答案恰好覆盖了地址一致性的全部要害:在哪生成、格式怎么定、多版本怎么选、改完怎么验。

反过来,如果你就是被问的那一方,这四个问题也值得自己先答一遍。答不上来的那一个,通常就是你的站下一次出问题的地方。

什么时候该停手

最后说一个容易被忽略的判断:不是所有分歧都值得修。

有三种情况可以放着不管。第一种是那些语义上本来就允许不同的字段,比如多语言的兜底版本和页面身份,前面已经说过。第二种是末尾斜杠这类格式差异,记成技术债,等下次改模板时顺手带上。

第三种最需要判断力:当修复的成本明显超过风险的时候。比如一个多年不更新的历史专题页,它的几处声明对不上,但它既没有流量也没有商业价值,那就别动它,把时间花在商品页上。

反过来,有三种情况必须立刻修:首页、主要分类页、以及正在投放广告的落地页。这三类的共同点是它们既有流量又有多个可达形式,正是分歧最容易产生实际后果的地方。

老页面还有没有价值,主题权威做到位为什么还是不选你列了18大盲区。

还有一条判断线可以直接用:如果一处分歧会导致搜索结果里显示出一个你不希望别人看到的地址,那它就必须修,不管流量多少。地址是给人看的,一个带着测试参数或者促销活动名的地址出现在搜索结果里,损失的是信任,那笔账不好算但确实存在。

最后一个数字

再回到那张表:严格比29.4%,放宽到极限77.0%。中间那57个站被一个斜杠救回来,而剩下的23%,无论你怎么放宽规则都救不回来,因为它们说的确实不是同一件事。

信任是怎么攒起来的,出海独立站的社会证明体系讲了信任工程。

你的页面对自己是谁说了三遍以上,而每四页里就有将近一页,三遍说的不一样。在这种情况下,接收方选了一个你不喜欢的答案,其实一点都不奇怪——它只是从你给的几个答案里挑了一个。

三篇写到这里,那条链算是走完了:东西得先在字节里存在,然后得送到对方手上,最后它到了还得被采信。三段各有各的判据、各有各的投入曲线,也各有各的典型误判。同一句“没通过”,在这三段里分别意味着你还没做、你做了但它没到、它到了但不算数。

如果只带走一件事,那就带走这个提问顺序:先问这个信息除了眼睛还有谁能读到,再问换个身份要一次结果一不一样,最后问这个结论是我声明的还是它算出来的。三个问题,十分钟,能省掉几周朝错误方向使的劲。

常见问题解答

搜索平台里显示的规范网址和我写的不一样,是不是我写错了?

不一定。那两个字段是并列的,一个记录你声明的,一个记录系统选定的,它们本来就允许不同。规范网址标签在官方定义里是强信号不是指令,系统会把它和站点地图、内部链接指向、跳转终点、外部链接使用的地址、多语言声明、结构化数据一起当成证据来评估。所以先别改标签,先去找那份跟你的声明打架的证据。本文实测的132个首页里,有23%在页面内部就存在无法用格式差异解释的真分歧。

三个问题各自的验证方法,AI爬虫到底有没有抓你的站讲了日志那一条。

末尾那个斜杠到底要不要紧?

对收录来说通常不要紧,主流搜索引擎会把根域名带不带末尾斜杠当成同一个地址。但它在本文的数据里贡献了最大一块差异:严格按字符串比只有29.4%的页面所有声明一致,只忽略末尾斜杠就跳到74.6%,一条规则救回57个站。它真正的意义是一个信号——同一个页面上的两个模块连这种事都没对齐,说明它们之间没有共享的地址生成逻辑,今天差一个斜杠,明天上多语言就会差一个语言前缀。

为什么hreflang的默认版本和其他声明最容易打架?

因为它回答的是另一个问题。规范网址回答的是这一页的正式地址是哪个,而hreflang的默认版本回答的是语言都匹配不上时把用户送到哪一版,前者是身份,后者是兜底策略,本来就不必相同。问题在于多语言模块通常由另一套插件或者另一个团队负责,它按自己的逻辑挑兜底版本,完全不知道页面上还有别的地方在声明身份。本文数据里,它跟结构化数据的分歧率是31.7%,跟规范网址是28.1%,都是全表最高的几项。

首页没有规范网址标签会出什么问题?

大多数时候不会出问题,系统会自己选一个规范版本,结构简单的站选对的概率不低。风险集中在两种情况:一是同一份内容有多个可达地址,带参数的、带追踪码的、带地区前缀的都能打开,这时候它可能选中你不想要的那一个;二是这个域名过去和别的域名共用过停放页或者过渡页,那段时间内容逐字节相同,系统会把它们归成一组并挑一个代表,而这个归并关系在你上线新内容之后不会立刻解除。

发现选定的规范网址指向一个陌生域名,我该做什么?

按顺序做三件事。先确认自己的页面有自指的规范网址标签,并且站点地图里的地址与标签逐字符一致,包括末尾斜杠。再尽快让内容与那个共用过的停放页产生足够大的差异,差异越大归并关系解除得越快。最后是等,官方给的建议是几周之后再看。切忌在等待期里反复改动或者反复提交重新抓取,每改一次都等于把评估周期重置一次,反而更慢。

多写几个地方声明同一个地址,是不是更保险?

正好相反。这是采信型问题里最典型的错误动作。多加两处声明,如果它们和已有的三处不完全一致,你就把矛盾从三份证据扩大到了五份。本文数据里,规范网址与og:url的分歧率只有2.2%,因为它们通常是同一段代码生成的;而涉及多语言声明的几对分歧率都在20%以上,正是因为它们出自不同的模块。正确的做法是减少选项,不是加强主张。

地址里那个443端口是怎么来的?

是站点自己写死在跳转响应里的。本文数据里有两个站的最终地址带着443端口,我特意把它们的跳转链原样打出来核对过:一个站的301响应头里目标地址原文就带着端口,另一个先308跳到裸域名再301到带端口的地址,都不是抓取工具加的。443是加密连接的默认端口,写不写在语义上没区别,但作为字符串就是两个不同的值,而地址处理有很多环节是按字符串来的。

这套对齐检查要不要全站都跑?

不用,选触发式更划算。两个触发点最值得盯:上线新模板或新插件的时候,因为地址声明基本都是模板层的东西,改一次能同时改坏几十个页面;以及上多语言或开新市场的时候,本文数据里分歧率最高的四对全部与多语言声明有关。日常抽查的话,首页、一个分类页、一个商品页各跑一次就够,一个页面十分钟。

规范网址和og:url不一致,严重吗?

严重。这一对在本文数据里的分歧率只有2.2%,是全表最低,因为它们在绝大多数系统里由同一段代码生成,或者一个直接引用另一个。它们不是达成了共识,是同一句话说了两遍。所以一旦你的站这两个字段对不上,说明连最容易一致的一对都出事了,几乎可以断定是两处分别硬编码的结果:有人在模板里手写了一个,又在插件设置里填了另一个。这类硬编码是所有地址不一致里最难发现的一种,因为它不遵循规律、只在某一页上错,逐页人工检查反而抓不到。

怎么判断一个问题属于采信型而不是另外两种?

看官方界面上有没有两个并列的字段,一个记录你说的,一个记录它选的。规范网址是最典型的一对,页面标题、描述摘要、商家名称展示形式也都属于这一类。凡是措辞里出现选定、检测到、系统判定这类词的字段,结论都是对方算出来的,你只能通过改变证据分布去影响它,不能直接指定。这跟缺失型(东西不在字节里)和送达型(东西在但那次请求没拿到)的处置方式完全不同,用错了不只是无效,还会更糟。

权威参考资料

分享到
标签
版权声明

本文标题:《canonical你说了不算:132个首页有23%自相矛盾》

本文链接:https://zhangwenbao.com/canonical-self-declaration-conflict-google-selected.html

版权声明:本文原创,转载与引用请注明作者与原文链接。许可协议: CC BY 4.0

继续阅读
发表评论
分享到微信 或在下方手动填写
支持 Ctrl + Enter 提交