2015-02-24 55 views
1

我在一个棘手的情况我不知道如何解决跌跌撞撞。避免图形API重定向循环,但重定向到URL猛击

我使用Facebook的图形API来跟踪我的web应用程序的文章共享和显示计数器到我的用户。该API要求我指定og:url属性以了解在哪个URL下聚合计数。

我的URL结构如下:

.../posts/id/slug 

嵌塞是纯粹的外观和可选。如果以后改变(这有时会发生),我要确保:

  1. 那我的用户仍然重定向到正确的页面
  2. 该共享计数器不复位

要满足条件1,I设置以下重定向:

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

为了满足条件2,我指出我og:url到slugless URL .../posts/id,这是我nvariable。

当然但是,这将导致为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) 

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

我看到目前唯一的解决方法是删除重定向),但它使URL更用户/ SEO友好。

回答

2

有两两件事你可以尝试:

首先,你可以使用<link rel="canonical" href=".../posts/id" />我相信这是为OG有效:URL 更换,应该然后Facebook的机器人不应该遵循一个重定向。但我没有测试它,这对我来说似乎是错误的。其次,你可以在服务器端阻止Facebook和og机器人的重定向,所以它不会进入循环,
或者(不太优雅)在javascript中做重定向到slugged url(如果需要的话)这样,机器人将不受影响(它不使用JavaScript)

个人,如果有可能与您的设置,我强烈地使用服务器端

+2

建议第二解决方案,我将禁用重定向Facebook机器人;查找字符串'在用户代理facebookexternalhit/1.0','facebookexternalhit/1.1'和'Facebot' - https://developers.facebook.com/docs/sharing/best-practices#user-agent-whitelisting – madebydavid 2015-03-17 10:55:58

+0

如果为你工作不要犹豫,有效的答案 – jrmgx 2015-03-18 18:05:18

+0

这一周,我会试着让你知道。感谢用户代理字符串! – Lazlo 2015-03-19 19:21:02