Google SDTT 错误:"All values provided for url must point to the same page."

Error in Google SDTT: "All values provided for url must point to the same page."

我正在尝试为电子商务网站上的产品列表创建一些 JSON-LD 结构化数据,但在使用 Google 的结构化数据测试工具时出现错误。

到目前为止,我有这个:

 {
 "@context": "http://schema.org",
 "@type": "OfferCatalog",
 "name": "Fresh Fruit",
 "itemListElement": [
  {
   "@type": "ListItem",
   "position": 1,
   "item":
   {
        "@type": "Offer",
        "price": "1.20",
        "priceCurrency": "GBP",
        "availability": "http://schema.org/InStock",
        "url": "http://example.com/green-apples/",
        "itemOffered": {
            "@type": "Product",
            "name": "Green Apples",
            "url": "http://example.com/green-apples/"
            }
        }        
   }  
 ]
}

大多数情况下它会验证,但 Google 工具会抛出以下错误:

All values provided for url must point to the same page.

错误突出显示第 11 行 ("@type": "Offer",)。

URL 字段似乎与 @context 声明冲突,因为如果我将上下文更改为非 url 字符串或 http://example.com,它验证了(尽管这显然会导致其自身的问题)。(在下面的评论中这已被证明是转移注意力)

我在这里错过了什么?这感觉就像是显而易见的东西。

肯定是验证器出错了。我检查了 google 提供的示例: https://developers.google.com/search/docs/guides/mark-up-listings 。 如果你点击第二个例子,你会看到它有同样的错误。

即使您使用 1 项也会显示错误:

{
  "@context": "http://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Recipe",
        "url": "http://example.com/desserts/pies/#apple-pie",
        "name": "Apple Pie",
        "image": "https://example.com/300px-Apple_pie.jpg",
        "author": {
          "@type": "Person",
          "name": "Carol Smith"
        },
        "datePublished": "2009-11-05"
      }
    }
  ]
}

我觉得跟移动端加速页面推送和结构化数据有关

请在这里查看我的想法:All values provided for URL must point to the same page。我的猜测是 Google 的 SDTT

中的问题

因此,要解决您的结构数据问题,请使用正确版本的 ItemList(有 Separately 和 Combined 标记的 ItemList,请检查 here):

  • 如果您的项目在同一页面上,请使用项目的版本 里面,组合的。

  • 否则,如果您指向内部的不同页面并且您的项目是 不在一页上,请不要将项目元素与类型和其他一起放置 里面的描述,单独标出一个。

我认为当我们混合使用两种列表类型时会出现问题,即摘要页面 + 多个完整详细信息页面和单个 all-in-one-page 列表。

Google 页上所述 - https://developers.google.com/search/docs/guides/mark-up-listings

  • 如果这是一个摘要页面ListItem 应该只包含 类型positionurl 属性。
  • 如果这是一个 all-in-one-page 列表,ListItem 应该包括所有额外的 schema.org 属性它描述的数据类型(例如,Recipe 或 Course 对象)。

但是 Google 应该考虑电子商务类别的产品列表,人们在夏季页面上显示具有 3 个以上属性的产品数量,这些对于电子商务来说是显而易见的,例如价格和图片是产品列表页面上的 2 个重要项目除了上面列出的 3 个。

所以我们需要通过 Google 提出这个问题来解决这个问题。

不,不是 Google 的 SDTT 中的错误,

我帮助过很多人修复他们的结构化数据,包括动态数组。阅读说明书。 Google 明确指出“URL 的所有值必须指向同一页面”。想想看,Google 是想告诉你一些事情。

那是什么意思"Hey you are using a different item list from the example we provided, your item list has more than two item"。

解决方法:

使用锚点!瞧!

请使用此示例代码段,您不会出错。还有另一个提示;使用 SDTT 中的 Fetch Url 选项:

<script type="application/ld+json">
/*structerd data markup compiled by http://www.iwanross.co.za */
{
"@context": "http://schema.org",  
"@type": "ItemList",
"itemListElement": [
{
    "@type": "ListItem",
    "position": 1,
    "item": {
    "@type": "Recipe",
    "url": "https://www.smokingchimney.com/#beetroot",
    "name": "Beetroot Side Salad for the braai",
    "image": "http://www.smokingchimney.com/recipe-pages/images/1x1/Beetroot-Salad- 
  for-the-Braai-800x451.jpg",
    "author": {
    "@type": "Person",
    "name": "Marna Ross"
   },
  "datePublished": "2018-10-05"
  }
},
{
  "@type": "ListItem",
  "position": 2,
  "item": {
    "@type": "Recipe",
    "url": "https://www.smokingchimney.com/#carrot",
    "name": "Carrot Cake",
    "image": "http://www.smokingchimney.com/recipe-pages/images/16x9/carrot-cake- 
 recipe-picture-1024x576.jpg",
    "author": {
    "@type": "Person",
    "name": "Marna Ross"
   },
  "datePublished": "2018-10-05"
 }
},
{
  "@type": "ListItem",
  "position": 3,
  "item": {
    "@type" : "Recipe",
    "url":"https://www.smokingchimney.com/#overnight",
    "name": "Overnight Steak Marinade",
    "image": "http://www.smokingchimney.com/recipe-pages/images/1x1/Overnight-steak- 
 marinade-700x465.png",
    "author": {
    "@type": "Person",
    "name": "Marna Ross"
   },
   "datePublished": "2009-10-05"
   }
   }
 ]
}
</script>

现在是 2018 年了。

上面 Yash Pal 的回答很接近,但不太正确。

这不是来自 Google 验证器工具的错误。

错误是有效的,你需要修复它。

您使用 "Single Page" 方法(有两种方法 "Summary page" 和 "Single page" )

对于 "Single Page" 方法,您需要每个 URL 完全相同,并且每个 "an anchor".

Google 开发者文档明确提到了它。

我写了解释详情there

如果您的页面包含一些指向另一个页面的链接,那么您应该使用 "Summary Page" 方法并且它具有不同的数据结构(我认为更简单)

你不需要每个URL锚定,你也可以给URL加上参数?i=1

喜欢:

https://website.com/d/link?i=1

https://website.com/d/link?i=2 ....

使用类型 OfferCatalog 而不是 ItemList。 https://schema.org/OfferCatalog