为什么Facebook返回错误的页面(影响Facebook赞和分享URL)?

当我们第一次发布博客文章时,Facebook经常(但并非总是)对页面的内容感到困惑.具体来说,如果您尝试使用博客页面上的“赞”按钮,或者如果您尝试通过个人资料上的“共享”链接进行分享,Facebook将会看到根博客页面而不是实际的帖子页面.

例如,我们最近发布了:
http://thisorthat.com/blog/2010-song-of-the-year-round-1-results

如果用户“喜欢”它,则返回标题:
http://thisorthat.com/blog

通过FB Linter运行发布URL时,您可以看到问题.
http://developers.facebook.com/tools/linter?url=http://thisorthat.com/blog/2010-song-of-the-year-round-1-results

在Debug部分中,它显示了一个额外的og:title,og:url,description和og:image(Debug部分的最后4行).这是来自根目录的元数据.我们无法弄清楚的是为什么.为什么Facebook在页面上看到正确的元数据,然后从根目录中提取元数据(并使用不正确的方法填充Like按钮和Share URL工具的数据)?

另一个奇怪的是.几天后,FB“明白了”.当然,到那个时候,相对较少的人正在观看这个帖子.

更新 – 我想再次感谢Peter Bailey的回答,但我们也发现在Like按钮工作之前还有另一个问题需要解决.

问题是我们在尚未发布的帖子上显示Facebook的Like按钮.这个问题是FB然后无法解析URL并“猜测”正确的URL.在我们的例子中,它总是猜测thisorthat.com/blog.不幸的是,它然后缓存猜测了几天,并且Linter无法清除缓存.所以最终的解决方案是修复og:类型,如彼得建议,但也从博客帖子预览中删除Like按钮.在页面发布之前不显示FB非常重要,如果你这样做,请更改URL.

最佳答案
很确定这是你的Open Graph类型,这就是问题所在.

<meta content="website" property="og:type"/>

the documentation

Use article for any URL that
represents transient content – such as
a news article, blog post, photo,
video, etc. Do not use website for
this purpose. website and blog are
designed to represent an entire site,
an og:type tag with types website or
blog should usually only appear on the
root of a domain.

转载注明原文:为什么Facebook返回错误的页面(影响Facebook赞和分享URL)? - 代码日志