javascript - 让 Facebook 抓取与共享内容不同的 URL

标签 javascript facebook ember.js facebook-opengraph

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

显然这在此时不起作用,因为 facebook 不支持像 google 搜索引擎那样的索引 javascript。因此,我见过的一种解决方案是使用 apache .htaccess 将来自 facebook 的请求重定向到服务器文件,该文件可以使用必要的开放图形标签创建准系统 html 页面,如本文中所示

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

但是,由于我们在 S3 上,所以我无法执行 apache .htaccess,并且从我从稀疏文档中收集到的有关其 S3 重定向规则如何工作以及它们可以做什么的信息来看,我不知道确定是否有办法用该方法来做到这一点。

所以我的问题是 facebook 或 open graph 甚至只是普通的元标签是否允许用户共享 url,让 facebook 使用该 URL,但遵循指向服务器生成文件的链接,然后如果有人单击该链接实际上让它将用户指向真正的单页应用程序页面,而不是 facebook 将用于抓取数据的服务器文件。

最佳答案

Facebook 支持“pointers”从不同的 URL 请求元数据 – 但这可能不会对您有帮助,因为对提供元数据的 URL 的引用必须再次成为您要共享的原始 URL 的 HTML 代码的一部分.

相反,您可能会做得更好:让您的用户共享服务器生成的包含正确元数据的文档的 URL,并将跟踪该链接的访问者重定向到应用程序中的真实目标 URL。您可以通过 JS (location.href='...') 或服务器端执行此操作(但在这种情况下,您需要为 FB 抓取工具实现该重定向的异常;它可以是由其用户代理识别,请参阅 https://developers.facebook.com/docs/plugins/faqs#scraperinfo )

关于javascript - 让 Facebook 抓取与共享内容不同的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35798553/

相关文章:

javascript - 如何为浏览器后退按钮指定上一页

javascript - 如何根据 Ember 中的变量获取数组内对象的值?

twitter-bootstrap - 我什么时候应该在 Emberjs 动态添加的 HTML 代码上调用 Twitter Bootstrap 方法?

ember.js - 为什么使用 itemController 会呈现空项目的集合?

javascript - 在 jQuery 或 JavaScript 中转义单引号

Javascript (jQuery) 将图像缩放到其容器的中心点

javascript - AngularJS - 如何在绑定(bind)的 html (ngBindHtml) 上设置事件

facebook - 发布操作审核失败

Facebook 图形 API : understanding offset_y offset_x API

ios - 使用 Facebook SDK 的 iPhone 应用程序崩溃并出现 "has active assertions beyond permitted time"错误