【问题标题】:Google SDTT error: "All values provided for http://www.example.com/ must have the same domain."Google SDTT 错误:“为 http://www.example.com/ 提供的所有值必须具有相同的域。”
【发布时间】:2017-03-09 19:39:03
【问题描述】:

当我复制/粘贴 JSON-LD example from Google Documentation(下面的代码-sn-p)时,Structured Data Testing Tool 中出现错误:

http://www.your-company-site.com(提供的所有值 http://www.example.com/ 必须具有相同的域。)

为什么 Google 自己的文档示例会出错?

Google 文档中的代码 sn-p:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Organization",
  "url": "http://www.your-company-site.com",
  "contactPoint": [{
    "@type": "ContactPoint",
    "telephone": "+1-401-555-1212",
    "contactType": "customer service"
  }]
}
</script>

【问题讨论】:

  • 奇怪,一个月前的代码居然没有报错。
  • 单行文档将使测试仪更加实用!
  • 下面的答案和 cmets 似乎包含正确的信息。让我们添加一个已接受的答案并链接有关此主题的所有其他问题。
  • 另一个仅供参考:显然这个“错误”只针对组织类型弹出;我没有收到网站实体的此错误

标签: url schema.org json-ld google-rich-snippets


【解决方案1】:

发生这种情况的一个原因是测试工具的用户体验。对我来说,这似乎有点儿马车。

首先在域上运行新测试。您将看到组织 url 是正确的,并且由于所有匹配项都没有警告。

现在,单击源代码(左窗格)并在无害的地方添加一个空格。您将看到域在顶部栏中消失:

您还会看到警告出现。点击“刷新”或开始新的测试将再次纠正错误。我猜他们这样做的原因是因为在手动编辑架构时,从技术上讲,您不再反映来自域的源代码。

【讨论】:

    【解决方案2】:

    如果您将 URL 更改为“https://search.google.com/structured-data/testing-tool/”,该工具将删除错误,只需确保在将代码放到您的网站之前更新它。

    此外,检查 Search Console 可能是一种(目前)更可靠的方法来查看您的标记是否有错误。

    【讨论】:

      【解决方案3】:

      我发现通过在您的网站中实施 JSON-LD sn-p(带有您的正确详细信息)并单击 Structured Data Test Page 右上角的“新测试”并使用您的正确 URL,它不会抛出错误。

      【讨论】:

      • @Nathan 我和自己争论过是否要使用你删除的那行......哈哈
      【解决方案4】:

      如果您在页面上粘贴一些代码并运行它,Google 会假定它应该是一个示例页面。而是这样做,

      1. 测试除“url”之外的所有其他
      2. 更新服务器上的 index.html
      3. 最后使用您的 url 运行测试(选择 New Test > Fetch URL)

      现在你不会再看到错误了。

      【讨论】:

        【解决方案5】:

        测试工具似乎假定 example.com 作为其域。

        在测试您是否可以将您的 url 更新为“www.example.com”时,它将成功验证。

        <script type="application/ld+json">
        {
          "@context": "http://schema.org",
          "@type": "Organization",
          "url": "http://www.example.com/",
          "contactPoint": [{
            "@type": "ContactPoint",
            "telephone": "+1-401-555-1212",
            "contactType": "customer service"
          }]
        }
        </script>
        

        【讨论】:

        • 我确认了这一点。
        • 已确认。显然只有主 URL 就可以了,这很奇怪。
        • 正如@Bryan Heckler 的回答,它应该是嵌入sn-p 的页面的域:“url”:“search.google.com
        • 看来这不再是真的
        【解决方案6】:

        此错误在您发帖前一个月的某个地方开始出现。由于忽略“contactPoint”时错误消失,即使它不包含 URL,这很可能是验证工具中的错误。

        我遇到了同样的问题,asked about it on the support forum

        【讨论】:

        • 看来,如果您将 @contexthttp://schema.org 更新到与您的网站相同的 URL,“提供的所有值”错误就会消失,但会导致新的“无效类型”错误跨度>
        • @BenParizek:你不应该那样做,因为你不再使用 Schema.org 的词汇,而是你自己的词汇。
        • 将@context 更改为其他内容会更改数据的含义。如果你想使用 schema.org,你需要有那个上下文(或者用相同的定义制造一个)。如果您想了解更多详细信息,请查阅 JSON-LD 规范。
        • 明白。我并没有建议这样做,而是分享一个细节,当它在测试工具中验证失败时,它似乎揭示了错误试图匹配的 URL。然而,值得指出的是。
        【解决方案7】:

        他们无法使用您要为其编写代码的站点的 URL 预先填充文档中的示例。他们不知道您正在为哪个网站编写代码。

        【讨论】:

        • 好的。但是,如果我用自己的数据或其他示例Implementing JSON-LD 替换 sn-p,我仍然会收到相同的 URL 错误。
        • 或者这只适用于实时网站?以及如何检查 JSON-LD sn-p?
        • @PieceofCode — 该测试工具在您向其提供数据的复制/粘贴而不是 URL 时,假定数据是针对 example.com 的。您可以忽略有关主机名错误的错误,更改数据以进行测试,或在您的实际环境中进行测试。
        • 好的。感谢您清除它。一些博文中经过验证的屏幕截图让我走错了路,但我认为这些来自实时/搜索控制台,而不是我提到的测试工具?
        • 我对你的回答投了赞成票,但因为我是新人,所以投票会被记录下来,不会显示出来。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        • 2021-07-12
        • 2017-06-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多