【问题标题】:Have facebook scrape a different URL than what was shared让 Facebook 抓取与共享的 URL 不同的 URL
【发布时间】:2016-03-04 14:31:09
【问题描述】:

我有一个在 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 使用它但点击一个链接到服务器生成的文件,然后如果有人点击该链接实际上让它将用户指向真正的单页应用程序页面,而不是 facebook 将用于抓取数据的服务器文件。

【问题讨论】:

    标签: javascript facebook ember.js facebook-opengraph


    【解决方案1】:

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

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

    【讨论】:

    • 好吧,问题是当有人从地址栏中复制 url 并把它放到 facebook 中分享(我什至看到我的非技术精通的母亲经常这样做)时,那是我试图关闭的部分。我知道如果我创建了一个分享按钮,我可以分享我想要的任何 URL。
    • 然后使用 HTML5 History API 让它在地址栏中显示“正确”的 URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多