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 应该只包含 类型,
position 和 url 属性。
- 如果这是一个 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
喜欢:
使用类型 OfferCatalog 而不是 ItemList。 https://schema.org/OfferCatalog
我正在尝试为电子商务网站上的产品列表创建一些 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 应该只包含 类型, position 和 url 属性。
- 如果这是一个 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
喜欢:
使用类型 OfferCatalog 而不是 ItemList。 https://schema.org/OfferCatalog