2015-02-24 57 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