facebook - 避免 Graph API 重定向循环,但重定向到 slugged URL

标签 facebook facebook-graph-api redirect

我偶然发现了一个棘手的情况,我不知道如何解决。

我使用 Facebook Graph API 来跟踪我的网络应用程序文章的分享并向我的用户显示该计数器。 API 要求我指定一个 og:url 属性来了解在哪个 URL 下聚合计数。

我的网址结构如下:

.../posts/id/slug

slug 纯粹是装饰性的且可选的。如果稍后更改(有时会发生),我想确保:

  1. 我的用户仍然被重定向到正确的页面
  2. 共享计数器未重置

为了满足条件 1,我设置了以下重定向:

A) .../posts/id            --> .../posts/id/current-slug
B) .../posts/id/wrong-slug --> .../posts/id/current-slug

为了满足条件 2,我将 og:url 指向 slugless URL .../posts/id,该 URL 是不变的。

但是,当然,这会导致 Facebook 绘图器出现重定向循环,无论初始 URL 是否正确(情况 X)或不正确(情况 Y)。

案例X:

Start: .../posts/id/slug
   --> .../posts/id        (Because of og:url)
   --> .../posts/id/slug   (Because of redirect)
   --> (loop)

案例Y:

Start: .../posts/id/wrong-slug
   --> .../posts/id/correct-slug (Because of redirect)
   --> (back to case 1)

知道如何解决这个问题吗?

我目前看到的唯一解决方案是删除重定向 A),但这会使 URL 对用户/SEO 不太友好。

最佳答案

您可以尝试以下两件事:

首先你可以使用<link rel="canonical" href=".../posts/id" />我认为 og:url replacement 是有效的,那么 Facebook 机器人不应遵循该重定向。但我没有测试过,它对我来说似乎是错误的。

其次,您可以在服务器端阻止 Facebook og 机器人的重定向,这样它就不会进入循环,
或者(不太优雅)在 javascript 中重定向到 slugged url(如果需要),这样机器人就不会受到影响(它不使用 javascript)

就我个人而言,如果您的设置可行,我强烈推荐使用服务器端第二种解决方案

关于facebook - 避免 Graph API 重定向循环,但重定向到 slugged URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28704730/

相关文章:

android - Facebook ProfilePictureView 导致 BINDER 事务失败

php - Facebook 登录重定向 PHP/Javascript 不起作用

Facebook 获取每个帖子的分享计数,得到 (#613) 流媒体调用已超过每 600 秒 600 次调用的速率

php - 重定向到身份验证对话框 - "An error occurred. Please try again later"

facebook - FB即时文章相关文章栏目

java - Tapestry 内部重定向到静态页面

ios - 如何创建 UITableView 加载数据样式,如 Facebook App 样式?

ios - 在 iOS 中使用 FBWebDialogs 在 Facebook 的 friend 墙上发帖

redirect - 谷歌分析 OAuth2 : How to solve error: "redirect_uri_mismatch"?

javascript - 如何检查一个 Div 是否为空然后执行操作