为什么Facebook不使用_escaped_fragment_而不是#!在某些情况下?

时间:2013-05-17 22:19:23

标签: php parsing facebook-graph-api get hashbang

我的页面中的代码由此激活(我可以在标题的注释中输出其值): isset($_GET['_escaped_fragment_'])

我正在使用此工具查看'刮刀看到'的来源https://developers.facebook.com/tools/debug

我的网址中有#! shebang。

尽管如此,我正在测试的其中一个网站收到_escaped_fragment_(使用网址中的?_escaped_fragment_=进行Facebook访问),而另一个网站没有。

我认为它与页面上的内容(og metas)没有任何关系,因为它决定了在加载URL之前是否要将#!重写为?_escaped_fragment_=

有人可以告诉我使这项功能有效的必要条件吗?

1 个答案:

答案 0 :(得分:2)

这是因为元og:url / link rel = canonical。我发现Facebook'刮刀看到的'会给你最终的结果,而不是你期望的'第一次爬行'。因此,FB爬虫会转到页面,看到带有og:url的元标记,或者最重要的是链接rel = canonical。然后它停止抓取页面并转到指定的URL。然后它会向您显示该URL的来源,并且其中没有shebang。这一切都是合乎逻辑的,但我并不认为这是“隐藏的重定向”或在幕后反弹。解决方案是过滤掉/删除元og:url并从头部链接rel = canonical,即关于它。一些WP插件顺便添加了这些。