我偶然发现了一个棘手的情况,我不知道如何解决。
我使用 Facebook Graph API 来跟踪我的网络应用程序文章的分享并向我的用户显示该计数器。 API 要求我指定一个 og:url
属性来了解在哪个 URL 下聚合计数。
我的网址结构如下:
.../posts/id/slug
slug 纯粹是装饰性的且可选的。如果稍后更改(有时会发生),我想确保:
- 我的用户仍然被重定向到正确的页面
- 共享计数器未重置
为了满足条件 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/