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

Jon*_*lly 8 facebook facebook-like

当我们第一次发布博客文章时,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按钮和共享URL工具的数据)?

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

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

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

Pet*_*ley 13

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

<meta content="website" property="og:type"/>
Run Code Online (Sandbox Code Playgroud)

根据文档

使用article该代表瞬态内容的任何URL -如新闻文章,博客文章,照片,视频等,不要使用website用于这一目的.website并且blog旨在表示整个站点,og:type具有类型的标记websiteblog通常应仅出现在域的根目录上.