避免使用Graph API重定向循环,但重定向到slugged URL

时间:2015-02-24 19:37:47

标签: facebook facebook-graph-api redirect

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

我使用Facebook Graph API跟踪我的网络应用程序文章中的共享,并显示与我的用户相反的内容。 API要求我指定og:url属性以了解汇总计数的URL。

我的网址结构如下:

.../posts/id/slug

slu is纯粹是化妆品和可选的。如果稍后更改(有时会发生),我想确保:

  1. 我的用户仍然被重定向到右页
  2. 共享计数器未重置
  3. 为了满足条件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友好。

1 个答案:

答案 0 :(得分:2)

您可以尝试两件事:

首先,您可以使用我认为有效的<link rel="canonical" href=".../posts/id" />作为og:url 替换,然后Facebook机器人不应该遵循该机器人的重定向。但我没有测试它,这对我来说似乎不对。

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

就个人而言,如果可以使用您的设置,我强烈建议使用服务器端

第二解决方案