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

Have facebook scrape a different URL than what was shared

本文关键字:URL Facebook 抓取 共享      更新时间:2023-09-26

我在 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或Open graph,甚至只是普通的元标记是否允许用户共享URL,让Facebook使用它,但跟随指向服务器生成的文件的链接,然后如果有人点击该链接实际上会让用户指向真正的单页应用程序页面,而不是Facebook将用于抓取数据的服务器文件。

Facebook支持"指针"从不同的URL请求元数据 - 但这可能不会帮助你,因为对提供元数据的URL的引用必须再次成为你想要共享的原始URL的HTML代码的一部分。

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