【问题标题】:Is it possible to extract metadata from fetched url instead of canonical url?是否可以从获取的 url 而不是规范 url 中提取元数据?
【发布时间】:2012-04-19 00:30:12
【问题描述】:

我有一个类似 Facebook 的链接,指向我无法完全控制的女巫页面:我可以修改页面的 <body>,但不能修改页面的 <head>... 所以我尝试在一个我可以完全控制的新页面上设置like按钮的链接,在这个页面上设置opengraph元标记,并设置一个链接到原始页面的og:url。

但最终 Facebook 会尝试从 og:url 中提取元数据并覆盖前一页的元标记... 是否可以说我想从第一个获取的 url 而不是从 og:url 中抓取元数据?

【问题讨论】:

    标签: facebook-graph-api metadata facebook-opengraph fetch canonical-link


    【解决方案1】:

    无法指示 linter 从 URL 与 og:url 中定义的 URL 不同的页面中提取 OpenGraph 元数据。

    Linter 将始终从链末尾的og:url 中定义的 URL 中提取元标记...

    有一种方法可以做其他事情(可能会,也可能不会满足您的需求):

    您可以创建包含所有必需 OpenGraph 的中间页面,包括指向该页面的 og:url(不是您无法控制的页面)。该页面将只有元数据和 JavaScript/Meta 重定向到最终页面,因此登陆此中间页面的用户将被重定向到正确的最终页面。

    请注意,这会将所有赞关联到“最终”页面,而不是中间页面。

    【讨论】:

    • 谢谢,很好的解决方案!我刚刚将 javascript 重定向放在第一个中间页面并且它可以工作......我知道将元数据放在最后一页的头部会更好,但是直到那天我将无法访问 没问题!
    • 谢谢您,好先生。这非常适用于 Javascript 单页应用程序。 Facebook 的爬虫没有得到正确的信息,因为页面在客户端使用 Javascript 动态呈现,并且爬虫只是解析服务器提供的 html shell 文件。使用这种技术,我进行了服务器端调用,以我需要的方式呈现元标记,最终客户端重定向到我的 Javascript 单页 Web 应用程序。完全按照我需要的方式工作。再次感谢!
    【解决方案2】:

    我认为 Facebook Debug/linter 中存在一个错误,即哪个 URL 可以包含 OG 元数据。您的 OG:URL 应该是规范的,这意味着该 URL 在今天、明天和十年后都应该有效。由于共享的 url 是临时的,Web 开发人员无法保证“获取”url 将持续存在。您的规范 / og:url 可能会重定向到具有 og: 标签的最终目的地。

    但是,FaceBook linter 中的错误是它没有跟踪通过 og:url 的重定向。即http://example.com/persistant/123,因为这可能只是重定向到友好的URL,例如http://example.com/year/month/title/persistant_123。也许来自 FaceBook 的人可以澄清他们对“应遵循规范 URL 的重定向”的解释。

    谷歌意见Google Webmaster Blog: Specify your Canonical

    rel="canonical" 可以是重定向吗?是的,您可以指定一个 URL 重定向为规范 URL。然后,Google 会将重定向处理为 通常并尝试对其进行索引。

    当前的 FaceBook 调试/Linter 做法是在到达 OG:URL 后停止,并且不遵循标准 HTTP 重定向来获取 OG 标签。我认为 Google 对 Canonical 的定义更符合 Web 开发人员的期望。

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 1970-01-01
      • 2016-01-04
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2013-05-03
      • 2017-11-16
      相关资源
      最近更新 更多