Facebook Share显示_escaped_fragment_ URL而不是哈希版本

时间:2011-12-28 07:40:26

标签: ajax facebook facebook-graph-api facebook-sharer

我创建了一个单页应用。所有深层链接都以mysite.com/#!/entry_title的形式出现。这允许Google(和Facebook)检查该页面内容的备用URL。

我已设置服务器端检查以确定Google或Facebook是否正在查找此页面的HTML快照。如果是这样,它会发送包含必要的Facebook og元标记的不同标头。

这是问题所在。如果我将其中一个网址(mysite.com/#!/entry_title)粘贴到我的状态框中,则显示的网址是HTML快照网址(mysite.com /?_ escaped_fragment_ / entry_title)。

HTML快照页面上的og:url元标记设置为mysite.com /#!/ entry_title。

如何让Sharer显示URL的mysite.com/#!/entry_title版本而不是HTML快照版本?

提前致谢!

  • 布雷特

1 个答案:

答案 0 :(得分:2)

我已经想到这一点,并认为我会为其他人发布答案。

诀窍是为Google / Facebook设置重定向以转到更漂亮的网址。所以任何网址都是

mysite.com/?_escaped_fragment_/entry_title 

被重定向到像

这样更漂亮的东西
mysite.com/view/entry_title

当有人共享我的一个动态网址时,Facebook会请求该页面的_escaped_fragment_版本,并被重定向到我更漂亮的网址(mysite.com/view/entry_title),这就是Facebook帖子中显示的内容。

为了确保人们始终共享我的动态网址,我在mysite.com/view/entry_title页面上设置了javascript重定向,以重定向回mysite.com/#!/entry_title页面。

虽然这不会显示Facebook共享中的动态网址,但它会显示比_escaped_fragment_版本更漂亮的网址,并强制用户返回我希望人们分享的动态网址。