让facebook刮取不同于共享的URL

时间:2016-03-04 14:31:10

标签: javascript facebook ember.js facebook-opengraph

我有一个内置于ember.js的单页面应用程序,我们在AWS S3上托管这个,我正在尝试提供一个解决方案,当有人从我们的网站共享一个URL到Facebook以便facebook能够正确地抓取该页面上的内容。

显然这不会起作用,因为facebook不支持像谷歌搜索引擎那样索引javascript。所以我看到的一个解决方案是使用apache .htaccess将请求从facebook重定向到服务器文件,该文件可以使用必要的开放图形标签生成一个完整的html页面,就像在这篇文章中一样

https://rck.ms/angular-handlebars-open-graph-facebook-share/

然而,由于我们在S3上,我无法做一个apache .htaccess,而且我从稀疏的文档中收集了他们的S3重定向规则如何工作以及他们可以做什么我不是确定是否有办法用这种方法做到这一点。

所以我的问题是facebook或开放图形甚至只是正常的元标记已经离开允许用户共享网址,让facebook使用但是按照指向服务器生成的文件的链接,然后如果有人点击该链接实际上,它将用户指向真正的单页应用程序页面,而不是Facebook将用于刮取数据的服务器文件。

1 个答案:

答案 0 :(得分:1)

Facebook支持“pointers”从不同的网址请求元数据 - 但这可能对您没有帮助,因为对提供元数据的网址的引用将再次成为HTML的一部分您要共享的原始网址的代码。

您可以采取相反的方式做得更好:让您的用户共享包含正确元数据的服务器生成文档的URL,并将遵循该链接的人员访问者重定向到应用程序中的真实目标URL。您可以通过JS(location.href='…')或服务器端(但在这种情况下,您需要为FB scraper的重定向实现异常;它可以由其用户代理识别,请参阅{{ 3}})