【问题标题】:Why non-canonical URL with a fragment identifier (#) is shared with a `_escaped_fragment_` query parameter?为什么带有片段标识符 (#) 的非规范 URL 与 `_escaped_fragment_` 查询参数共享?
【发布时间】:2015-04-01 21:46:44
【问题描述】:

我正在使用Facebook's Share Dialog 来分享一个类似...的网址

http://www.example.com/products/9-some-name#!23

在该页面的 HTML 中,将不同的 URL(也带有片段标识符)指定为规范 URL,例如

<link rel="canonical" href="http://www.example.com/products/9-canonical-name#!23">
<meta property="og:url" content="http://www.example.com/products/9-canonical-name#!23">

在我的 Facebook 个人资料中,共享 URL 显示为

http://www.example.com/products/9-canonical-name?_escaped_fragment_=23

这是一个错误吗? (我希望共享 URL 按原样发布,即不是规范的 URL,并且没有任何转换。)

更新

经过更多调查,我意识到这与片段标识符没有任何关系。本质问题是Facebook在用户个人资料中发布的URL是og:url中的URL,而不是最初共享的URL。而且似乎无法更改(据我了解a related question)。

【问题讨论】:

  • URL 的哈希部分只对客户端有意义。 Facebook 怀疑您可能会针对不同的哈希值显示不同的内容 - 因此他们要求 Google 为此类情况发明的转义片段格式,以确保服务器可以提供正确的内容。

标签: facebook facebook-javascript-sdk facebook-opengraph canonical-link


【解决方案1】:

根据在 Facebook 上分享最佳实践的文档,og:url 应该是一个没有会话 ID 或无关参数的 URL。 Facebook 上的所有分享都将使用 og:url 作为识别 URL。

developers.facebook.com/docs/sharing/best-practices#tags

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-24
    • 2011-04-20
    • 2011-09-06
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多