DTC 品牌营销知识库 DTCBM.COM 关注公众号

SEO · ecommerce-seo

产品变体的网址、canonical 与结构化数据

要点

一、每个变体要有能单独打开的网址。Google 电商网址结构文档把颜色、尺寸等属性的每种组合称为一个产品变体,建议每个变体能用独立网址识别,推荐两种写法:路径段(/t-shirt/green)或查询参数(/t-shirt?color=green)。参数写成 ?key=value,不写 ?value;同一参数不要在网址里出现两次,否则 Googlebot 可能忽略其中一个值。用 # 片段区分变体的做法不可行,Google 编入索引时不使用片段,/product/t-shirt#black 和 /product/t-shirt#white 会被当成同一页。

二、用可选查询参数区分变体时,canonical 指向去掉参数的网址。例如 /coat?size=small&color=green 的 canonical 写 /coat,Google 说明这样有助于它理解变体之间的关系。同一文档还建议:内链、sitemap、<link rel="canonical"> 三处用同一个网址;每个变体有独立网址的商品,在各变体页用 canonical 指向规范商品网址。

三、预选网址要真正预选该变体。产品变体结构化数据文档要求网站能用独立网址(查询参数)直接预选每个变体,预选包括显示该变体的图片、价格、库存状态,并能把该变体加入购物车,Google 靠这些网址抓取和识别各变体。Shopify 的变体网址结构是 /products/[product-handle]?variant=[variant-id],页面选中哪个变体由 variant 参数决定。

四、单网址做法(Google 文档称 single page)。各变体在同一页面切换,不重新加载页面,通常用查询参数预选。Google 的要求和示例:

  • 整个 ProductGroup 只能有一个 canonical 网址,通常是不带变体参数、未预选变体的基础网址,例如 https://www.example.com/winter_coat。
  • ProductGroup 的 url 属性只在单网址做法里使用,填不带变体选择参数的网址。
  • 用户在页面上切换颜色、尺寸时,图片、价格、库存随之变化,但结构化数据标记本身不随选择变化,标记里一次列出页面上的各个变体,每个变体的 Offer 或 Product 带各自的预选网址。

五、多网址做法(Google 文档称 multi page)。不同变体在不同页面,例如浅蓝色在 /coat/lightblue?size=small,绿色在 /coat/green?size=small,切换颜色会重新加载页面。Google 的要求和示例:

  • ProductGroup 没有 canonical 网址,因为变体分布在同等重要的多个页面上,没有一个网址能代表整个产品组;url 属性不用于多网址做法。
  • 每个页面要有完整、自足的标记,不依赖别的页面就能读懂。ProductGroup 的完整定义在每个变体页重复一遍,不能只在一个页面定义、在其他页面引用。
  • Google 示例在每页的 hasVariant 里完整写出本页变体,其他页面的变体只写 url 属性,用来帮助 Google 发现这些变体。

六、结构化数据各属性的用法。

  • ProductGroup 的必需属性只有 name,例如 Wool winter coat;变体 Product 的名称要更具体,例如 Wool winter coat - green, size small。description 同理,变体描述最好带上颜色、尺寸、材质等区分词。
  • productGroupID 写产品组标识(父级 SKU)。也可以不写在 ProductGroup 上,改在各变体 Product 上用 inProductGroupWithID 写同一个值;两处都写时值要一致。每个产品组的标识不能重复。
  • variesBy 写变体按哪些维度区分,用完整 Schema.org 网址引用。Google 支持六个:https://schema.org/color、size、suggestedAge、suggestedGender、material、pattern(后五个同样写成完整网址)。
  • 变体与产品组的关联有两种写法:在 ProductGroup 里用 hasVariant 嵌套各变体 Product;或者变体单独写,用 isVariantOf 指回 ProductGroup(Google 示例用 @id 引用)。Google 推荐嵌套写法,理由是最紧凑、最自然。
  • 每个变体在标记里要有不重复的标识,例如 sku 或 gtin。
  • 品牌、评价、材质、适用人群等变体共有的属性放在 ProductGroup 层;品牌已写在 ProductGroup 时不必在每个 Product 重复。
  • 变体属性之外,还要按商家信息(merchant listing)或商品摘要(product snippet)文档的必需属性补全 Product 标记。

七、Product 标记放在初始 HTML 里效果更好。Google 在变体文档和商家信息文档里都写了:面向各类购物结果的商家建议把 Product 结构化数据放在初始 HTML;用 JavaScript 动态生成的标记可能让 Shopping 抓取频率更低、可靠性更差,对价格、库存这类变化快的内容影响较大。

八、两种做法怎么选。Google 文档没有说哪种做法排名更好,只给出各自的定义和要求。下面是按文档条件做的推断,不是 Google 原话:变体之间只有颜色、尺寸等属性不同、正文基本相同,并且前端能在一页内切换,适合单网址做法,信号集中到一个 canonical 网址;变体各自有足够不同的内容、页面可以单独成立(文档的说法是同等重要的页面),适合多网址做法,代价是每页都要维护完整的 ProductGroup 标记。

容易误解的地方

  • 以为 canonical 指向基础网址后,变体预选网址可以随便处理。Google 依靠预选网址识别变体,预选网址打开后要显示该变体的图片、价格、库存并能加购。
  • 两份 Google 文档对 canonical 的说法看起来不同。电商网址结构文档建议变体页 canonical 指向规范商品网址,针对的是用可选参数区分变体的情况;变体结构化数据文档说多网址做法没有代表 ProductGroup 的单一 canonical,针对的是变体分布在同等重要页面的情况。选定一种做法后按对应要求设置,不要两种混用。
  • 在多网址做法里给 ProductGroup 填 url,或指定一个“产品组 canonical”。文档写明这一要求不适用于多网址做法。
  • variesBy 只写短名 color。文档要求用完整 Schema.org 网址引用。
  • productGroupID 和各变体的 inProductGroupWithID 值不一致,或不同产品组用了相同标识。
  • 加了 ProductGroup 标记就期待出现变体富结果。Google 写明不保证使用结构化数据的功能会出现在搜索结果中。

怎么检查

  • 逐个打开变体预选网址(例如 ?variant=、?color=),确认图片、价格、库存、加购按钮对应该变体;再查看页面源代码,确认 Product 标记出现在初始 HTML 里。
  • 在源代码里找 <link rel="canonical">:单网址做法下各预选网址都应指向同一个基础网址;同一页面在 sitemap、canonical、内链里用的网址要一致。
  • 用富媒体搜索结果测试检查 ProductGroup 和 Product 标记,修复严重错误。
  • 用 Search Console 网址检查工具看 Google 抓到的 HTML、Google 选定的规范网址,确认页面没有被 robots.txt、noindex 或登录拦住。
  • 核对标记细节:productGroupID 与 inProductGroupWithID 一致,sku 或 gtin 不重复,variesBy 用完整网址,多网址做法下每页都有完整的 ProductGroup 定义。

来源

公众号 DTC品牌营销 二维码扫码 / 长按识别

接入知识库

把整套已验证知识接进你自己的 AI

关注公众号「DTC品牌营销」,自动发放知识库 MCP / CLI 接入 key,让你的 AI 直接调用全部已沉淀经验,并持续接收更新。

相关内容