我偶然发现了一个棘手的情况,我不确定如何解决。
我使用Facebook Graph API跟踪我的网络应用程序文章中的共享,并显示与我的用户相反的内容。 API要求我指定og:url
属性以了解汇总计数的URL。
我的网址结构如下:
.../posts/id/slug
slu is纯粹是化妆品和可选的。如果稍后更改(有时会发生),我想确保:
为了满足条件1,我设置了以下重定向:
A) .../posts/id --> .../posts/id/current-slug
B) .../posts/id/wrong-slug --> .../posts/id/current-slug
为了满足条件2,我将og:url
指向了不变的URL .../posts/id
,这是不变的。
但是,当然,这会导致Facebook grapher的重定向循环,无论初始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友好。
答案 0 :(得分:2)
您可以尝试两件事:
首先,您可以使用我认为有效的<link rel="canonical" href=".../posts/id" />
作为og:url 替换,然后Facebook机器人不应该遵循该机器人的重定向。但我没有测试它,这对我来说似乎不对。
其次,您可以在服务器端阻止Facebook og机器人的重定向,这样它就不会进入循环中, 或者(不太优雅)在javascript中重定向到slugged url(如果需要),这样机器人就不会受到影响(它不使用javascript)
就个人而言,如果可以使用您的设置,我强烈建议使用服务器端
第二解决方案