【问题标题】:How to use RDFa with Google and HTML head <base> tag如何将 RDFa 与 Google 和 HTML 头 <base> 标签一起使用
【发布时间】:2018-12-23 23:22:24
【问题描述】:

在一个网站上,我们使用 HTML 头部 base 标记。原因是通过相对 URL 链接到静态资源很方便,而且很难更改。内容 URL 始终是完全限定的。所以head 部分看起来像:

<head>
    <base href="http://example.com/static/" />
</head>

现在,我们使用 RDFa 来指定页面上的结构化数据。要填充即schema:Product 页面,请说http://example.com/product1。现在,问题来自base标签:在没有任何其他修复的情况下,RDFa解析器认为整个RDFa数据大约是http://example.com/static,而不是http://example.com/product1

我们尝试在&lt;html&gt;&lt;body&gt; 上添加属性about="http://example.com/product1",结果喜忧参半。

这间歇性地适用于 Google 的结构化数据测试工具。从某种意义上说,大约 2 个月前它在添加到 &lt;body&gt; 时似乎可以正常工作,现在在添加到 &lt;head&gt; 时似乎可以正常工作。

但是,在“结构化数据”下的 Search Console 中,这种情况甚至不会间歇性地起作用。它曾经在大约 8 个月前与 &lt;html about="..."&gt; 一起工作,但现在这两种方式都行不通。我的意思是页面被编入索引,而不是结构化数据。

那么,是否有一种标准的、经过验证的方法可以让 Google(以及任何通用元解析器)正确地了解具有与其实际 URL 不同的通用 &lt;base href="" /&gt; 标记的网页的 URL?

示例 1

假设以下内容由 HTTP GET http://bar.com/product1 渲染

<html prefix="schema: http://schema.org/">  
    <head>  
        <base href="http://foo.com/" />  
    </head>  
    <body about="http://bar.com/product1" typeof="schema:Product">  
        <span property="schema:name">Bar product</span>  
    </body>  
</html>  

以上:

  • 约 8 个月前基于 Google Search Console/结构化数据和 Google 结构化数据测试工具约 2 个月前与 Google 合作
  • 自 8m 前以来未使用基于 Google Search Console/结构化数据的 Google(未报告错误,但未将新内容提取到结构化数据报告中),未使用测试工具 ATM 进行解析

示例 2

<html prefix="schema: http://schema.org/" about="http://bar.com/product1" typeof="schema:Product">
    <head>  
        <base href="http://foo.com/" />  
    </head>  
    <body>  
        <span property="schema:name">Bar product</span>  
    </body>  
</html>  
  • ~2 个月前未使用 Google 结构化数据测试工具进行解析
  • 正在使用 Google 结构化数据测试工具 ATM 进行解析
  • 未与基于 Google Search Console/结构化数据 ATM 的 Google 合作(未报告错误,但未将新内容提取到结构化数据报告中)

【问题讨论】:

    标签: html url google-search google-rich-snippets rdfa


    【解决方案1】:

    您的两个示例 sn-ps 似乎在 Google 的 Structured Data Testing Tool 中都能正常工作。正如人们所期望的那样,它们产生相同的输出。

    @type Product
    @id http://bar.com/product1
    name 酒吧产品

    我无法在 Google 的 Search Console 中对其进行测试,但我可以想象您看到的问题与 RDFa 标记无关。

    无论如何,您可以尝试使用resource 而不是about。虽然在 RDFa 中这两种方式都很好,但 RDFa Lite 仅支持 resource。我并不是说 Google 只支持 RDFa Lite(可能不支持,因为他们的 SDTT 似乎支持 about 很好),但是当他们提到 RDFa 时,他们通常会链接到 RDFa Lite 规范。

    <html prefix="schema: http://schema.org/">  
        <head>  
            <base href="http://foo.com/" />  
        </head>  
        <body resource="http://bar.com/product1" typeof="schema:Product">  
            <span property="schema:name">Bar product</span>  
        </body>  
    </html>  
    

    【讨论】:

    • 谢谢@unor,尽管您报告的内容只对了一半:如果您将 HTML 粘贴到 SDTT 中,则
    • @Dinu:我明白了——所以 SDTT 中的问题只有在通过 URL 检查时才会出现。多年来,我读到了许多此类问题(适用于代码粘贴检查,不适用于 URL 检查)。虽然有些可能与服务器的响应方式有关,但对于其他人来说,这不是问题。我猜这只是 SDTT 中的一个错误。
    • 是的,看起来很像,但是我显然更关心实际的 Google 解析和结果,即空的 Search Console ...我希望有一些关于如何做到这一点的权威规范Google 或 RDFa 社区或其他地方,或一些经过验证的方法,在他们的解析器中似乎偶尔发生的变化中幸存下来。
    • 注意:(更新的问题)从您的回复看来,我的描述并不清楚:页面已编入索引(就静态内容而言),只是未解析的结构化数据搜索控制台。对于没有 标记的页面,它可以被解析,只是这些页面,只是最近,而且只是缺少结构化数据。
    猜你喜欢
    • 2015-12-23
    • 2011-01-27
    • 2020-07-29
    • 1970-01-01
    • 2022-08-22
    • 2011-06-27
    • 2013-04-28
    • 2018-10-02
    • 1970-01-01
    相关资源
    最近更新 更多