如果ajax web应用中的'Like'按钮指的是同一个页面但是有不同的#字符串,那么Facebook会做什么?
它是否将它们视为“喜欢”的不同页面?
例如,如果我得到4次点击:
mysite.com/articles#story1
mysite.com/articles#story2
mysite.com/articles#story3
mysite.com/articles#story4
用户新闻源中会出现什么
4 people like mysite.com/articles
或
dave likes mysite.com/articles#story1
tom likes mysite.com/articles#story2
ben likes mysite.com/articles#story3
nick likes mysite.com/articles#story4
还有其他需要考虑FB和#strings吗?
答案 0 :(得分:7)
Facebook类似按钮使用嵌入在单个页面的HTML标记中的元数据。理论上如果你的URL在curl访问时会生成不同的元数据(即没有JavaScript,我认为这是不可能的,因为哈希部分没有在服务器端看到,所以没有办法对服务器端的哈希字符串值进行操作) )。
所以说过,我会假设Facebook Like按钮对于不同的哈希字符串的行为不同。看看facebook文档(主要是糟透了)并没有提到这一点,但Facebook开发者论坛似乎证实了这一点:http://forum.developers.facebook.com/viewtopic.php?pid=240151
然而,一切都不会丢失。您可以指定类似按钮的网址,因此只需将网址设置为同一网页的SEO友好网址:http://developers.facebook.com/docs/reference/plugins/like
所以,现在我们知道你有哈希字符串URLS的静态版本。之前,您最有可能在页面上放置如下代码:
<强> XFBML:强>
<fb:like show_faces="false" width="450"></fb:like>
相反,您应该指定URL的SEO版本。例如,当您使用 mysite.com/articles#story4 时,代码应如下所示:
<强> XFBML:强>
<fb:like href="mysite.com/articles/story/4" show_faces="false" width="450"></fb:like>
答案 1 :(得分:1)
Facebook将删除散列标记后的所有内容。 您需要做的是在%23
中发送您的请求转义#符号编码<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmysite.com%2Farticles%2F%23story1" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:px">
答案 2 :(得分:0)
Facebook大多数*支持Google's ajax-crawling spec,因此如果片段以感叹号开头,那么Facebook将对请求进行以下转换,以便服务器可以获取片段并提供预期的内容。 / p>
https://myapp.com/#!/post/2 =&gt; https://myapp.com/?_escaped_fragment_=/post/2
(根据谷歌的规格,用户永远不应该看到丑陋的网址,所以我认为Facebook会始终以“感叹号”格式存储这些网址。)
为这些请求提供适当的内容通常并非易事。查看更多here。
*元标记触发器不起作用。我在2012/08/18测试了它。