应该把 og:image 和 og:url 放在 <meta> 还是 <link> 中?

5

对于og:imageog:url,由于它们具有URL,我可以将它们放在link标签中而不是meta标签中吗?这样做是否更好?

此外,使用这两个标签时,og:imageog:url有什么区别?

2个回答

5

我不清楚OGP的其他主要消费者情况,所以这可能不是你的情况,但如果你计划为Facebook实现它,

请坚持使用元标签。

通过Open Graph Debugger进行快速实时测试,并且调整og:标签,似乎facebook仅在这些标签放置在<meta>中时才能识别它们。

试试吧

如果您创建了一个空HTML文件,其中仅包含一个og:url标签在其<head>部分,将其上传到任何URL并通过上述调试器运行,两者都会出现。

<link rel="og:url" href="http://www.imdb.com/title/tt0117500/" />

并且

<link property="og:url" content="http://www.imdb.com/title/tt0117500/" />

编辑或者,像评论中建议的那样

<link property="og:url" href="http://www.imdb.com/title/tt0117500/" />

如果无法解析,则会返回原始URL,而

<meta property="og:url" content="http://www.imdb.com/title/tt0117500/" /> 

正确解析并返回IMDb上《摇滚巨星》的内容。说到底,语义很好,但可运行的代码更好。


感谢您的回答。我正在遵循元数据来处理与开放图谱相关的URL。 - jayant
1
对于 link 元素,您必须使用 href 属性而不是 content 属性。因此,它应该是 <link property="og:url" href="http://www.imdb.com/title/tt0117500/" />。不幸的是,我无法测试它,因为他们的调试器需要一个帐户。 - unor
不错的观点,虽然 property 看起来也很别扭。无论如何,为了确保我已经按照你建议的使用 <link property="og:url" href="http://www.imdb.com/title/tt0117500/" /> 进行了测试,但它也无法解析。似乎 meta 是唯一被接受的标签。 - ppajer

2

如果值是URL,您必须使用link而不是meta

来自meta元素的定义

meta元素表示各种不能使用[...]link[...]元素表达的元数据。

但是,URL可以使用link元素进行表达(因为这是其目的)。

如果您使用meta元素用于URL值,则RDFa解析器将提取字符串值而不是URL值。这也意味着它们将无法根据基本URL应用相对引用。

示例

假设这些元素位于URL为http://example.com/foo的文档中:

<link property="schema:url"    href="/bar" />
<meta property="schema:url" content="/bar" />
link元素中的值是URL:http://example.com/bar
meta元素中的值是字符串:/bar

然而,在OGP的情况下……

OGP文档中的示例使用meta元素作为URL值;没有使用link元素的示例。
虽然这意味着他们的许多示例不是有效的HTML+RDFa,并且在这些情况下,RDFa解析器将提取字符串而不是URL,但是Facebook(或任何其他使用者)实际上可能并未使用RDFa来解析内容,他们可能并不支持link元素。
注意:这些只是根据其文档质量的猜测。我没有任何经验/见解,因为我不使用Facebook。因此,如果您关心他们基于OGP的功能,您可能需要通过Facebook测试它。

我现在关注于Open Graph。不过,你的回答让我对RDFa解析器有了更深入的了解,我计划接下来实现它。感谢你的回答。 - jayant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接