【问题标题】:Difference between rel="canonical" and og:url?rel="canonical" 和 og:url 之间的区别?
【发布时间】:2013-03-09 00:03:14
【问题描述】:

关于搜索引擎和 Facebook 的处理方式,我无法理解规范 URL。

我的 Google 地图支持网站允许访问者使用社交媒体在他们的国家/地区申请演出。可以在以下位置找到相关页面之一:http://izzy.nogig.in/

当用户点击他们的国家标记时,它会为他们提供分享选项 (twitter/facebook/etc),分享时将分享专门针对该国家/地区的 URL,例如:izzy.nogig.in/usa?或izzy.nogig.in/西班牙?等等

URL 中的所有这些国家/地区都包含大量重复内容,因此我使用以下内容将搜索引擎指向我想要排名的页面:-

<link rel="canonical" href="http://izzy.nogig.in/_?"/>

为了让 Facebook 点赞数计入每个国家/地区,我将我的 Open Graph "og:url" 设置如下,例如:

<meta property="og:url" content="http://izzy.nogig.in/australia?" />

现在,当我通过 Facebook 对象调试器(例如http://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fizzy.nogig.in%2Faustralia%3F)运行特定国家/地区的 URL 时,它会显示以下内容:-

Response Code:  206
Fetched URL:    http://izzy.nogig.in/australia
Canonical URL:  http://izzy.nogig.in/australia

Mismatch og:url and canonical url:
og:url tag in the header is not the same URL as rel='canonical' link in the html.

上面的错误让我很困惑。我知道它们不匹配,但我认为这是正确的方法。

调试器中的所有内容对我来说都很好(每个国家/地区的正确链接、描述、图像等),我无法更改 rel="canonical" 值以匹配我的 og:url,因为我需要它指向搜索引擎的单页(无国家/地区)。

我相信一切正常。我应该忽略调试器的错误,还是我设置不正确?我不希望每个国家/地区的“喜欢”都消失并计入 rel="canonical" URL。

非常感谢 - 将

【问题讨论】:

  • 如果页面有不同的link rel="canonical"og:url,Facebook Open Graph Debugger 似乎不再发出警告。
  • 如果您尝试使用 Yoast 实现它,请注意有一个警告 - remake.ie/…

标签: facebook facebook-opengraph canonical-link


【解决方案1】:

规范的网址是指页面内容

目标(规范)IRI 必须标识以下内容 上下文中内容的重复或超集(引用) IRI。 rfc6596#3

Opengraph url 指的是“object”

将在图表中用作其永久 ID 的对象的规范 URL,例如“http://www.imdb.com/title/tt0117500/”。 ogp.me

所以它们可能不同。例如,对于多语言网站,每种语言的页面应该有不同的规范 url,因为内容不同,但通常所有语言都使用相同的 og:url,因为它们引用了多种语言描述的同一个对象。

【讨论】:

  • 我就是这么做的。我保持规范和og:url 不同。这样,我确保永远不会丢失我所有的 Facebook 赞,因为 URL 只包含主键 ID,而不是所有关键字。
【解决方案2】:

我看不出为什么 og:url 和 canonical 应该不同。在这两种情况下,您都是在向搜索引擎或 Facebook 说明您想要索引或显示的页面。

【讨论】:

  • 如果您只有几个属性,您只需将基本的og: 元标记添加到您的页面,但如果您有很多详细描述 Open Graph 对象的属性(例如您的 OG 对象是一个您可以吃、喝、跳舞等的场所,并且您设置了 OG 操作以与该场所进行交互),很高兴将这些标签放在单独的页面上,这样您的用户就不必下载它们 - 信息毕竟只对 Facebook 有用。如果用户代理是“facebookexternalhit”,则特殊的 Open Graph 页面会正常加载,并为任何其他用户代理重定向到您的真实页面。
  • 您可能希望允许用户共享过滤和分页的结果,但不让搜索引擎索引它们。在这种情况下,您希望og:url 采用https://example.com/products?category=foo&amp;page=3 的形式,但将canonical 保留为仅https://example.com/products
【解决方案3】:

在我开发的一个网站上,我以一种以上的语言提供页面,并提供链接以允许用户在一种语言和另一种语言之间切换。因此,我的rel="canonical" 将具有 URL http://www.example.com/,而在代码中我更新了og:url,使其成为http://en.example.com/http://fr.example.com/。这样,当用户在 Facebook 上分享页面时,所有内容都会以他们查看页面时的语言显示在 Facebook 上,这是有道理的,因为访问者的大多数朋友可能会说同一种语言。

问候。

【讨论】:

  • 听起来正是规范网址应该服务的目的......还是我在这里弄错了?
  • 内容在语言子域中是唯一的,因此您还应该将规范 URL 设置为语言版本。您所做的是对搜索引擎说fr.example.comexample.com 的内容相同,但事实并非如此。
【解决方案4】:

链接rel="canonical" 将被搜索引擎使用,而og:url 将被facebook 使用

og:url 基本上告诉 FB 爬虫“ignore anything on this page, and scrape this url instead

更多规范链接元素:http://en.wikipedia.org/wiki/Canonical_link_element

【讨论】:

  • 首先应该考虑这是什么意思,其次才是如何使用。 Opengraph 不再仅由 Facebook 使用,它是开放标准。搜索引擎可能会决定使用或不使用任何元数据来处理损坏或垃圾网站。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 1970-01-01
  • 2021-12-25
  • 2020-05-10
  • 2014-09-20
  • 2010-10-28
  • 2015-10-04
相关资源
最近更新 更多