2014-05-23 4 views
0

저는 내 단축키가 있습니다. 페이스 북 페이지에 링크 누군가 점유율, 페이스 북은 어떻게 든 내 URL을 전달하고 직접 그 경우에, 그래서 페이스 북에 링크를 추가 할 경우 누군가가 내가 추적 할 수 없습니다 페이스 북에 링크를 클릭 할 때 예를 들어 www.example.com/Asywww.facebook.com/id단축키가 Facebook 링크와 함께 작동하지 않습니다.

로 리디렉션 클릭 수.

public function redirect($uri){ 
    $link = Link::where('uri',$uri); 
    // Save number of click in database 
    return Redirect::to($link->real_url); 
} 

내가 google.com 모든 리디렉션하려는 경우 미세하지만 페이스 북 타임 라인에 페이스 북 페이지가 작동하지 않습니다

내가 사용하고 코드는 다음과 같다.

누군가가 Twitter에 링크를 걸었고, 내 앱에 먼저 연결 한 다음 Facebook으로 리디렉션하면 작동합니다.

답변

3

페이스 북과 같은 사운드는 리디렉션을 따라 가며 자신을 가리킨다는 사실을 깨닫고 사용자를 Facebook에 계속있게합니다. 당신은 아마 시도하고 페이지를 방문하는 사람 감지하고 페이스 북 크롤러 있는지, 그리고 그것을 몇 시간 전에 행동의 변경 링크를

public function redirect($uri){ 
    if (in_array($_SERVER['HTTP_USER_AGENT'], array(
     'facebookexternalhit/1.1 (+https://www.facebook.com/externalhit_uatext.php)', 
     'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)' 
    ))) 
    { 
     // It is probably a Facebook bot 
     // So put a fake page here. 
     // Note - dont redirect this fake link - or FB might follow the fake link 
     return View::make('fake.page'); 
    } 
    else { 
     //that's not Facebook - so show the real link 
     $link = Link::where('uri',$uri); 
     // Save number of click in database 
     return Redirect::to($link->real_url); 
    } 

} 
0

페이스 북 링크 구문 분석을 허용로를 속일 수 있습니다. 이제 최종 URL에 도달 할 때까지 HTTP 리디렉션을 따르고 대신 클라이언트를 종료하는 데 사용됩니다. Facebook debug tool을 사용하여 URL을 디버깅 할 때 분명하게 표시됩니다.

HTTP 301 리디렉션은 "영구적 리디렉션"을 의미합니다. 페이스 북이이를 따르는 것은 꽤 정상적인 현상입니다. 모든 브라우저에서 마찬가지이기 때문입니다. 예 : 301 페이지를 다른 페이지로 리디렉션하는 링크를 브라우저에 삽입하면 첫 번째 히트가 변환/기록되고 다음에 짧은 URL 서비스 (사용하는 경우) 없이도 리디렉션됩니다. 브라우저 자동 리디렉션을 방지하려면 HTTP 상태 리디렉션 동작을 301에서 302로 변경해야합니다. 즉, "임시 리디렉션"을 의미합니다. 그러나 이것은 페이스 북의 문제를 해결하지 못할 것이다.

페이스 북이 최종 URL 대신 리디렉션을 사용하여 짧은 URL을 표시하는 데 성공한 유일한 방법은 publishing through Facebook API이며, 302 상태와 함께 사용했습니다. API를 통해 생성 된 게시물은 데이터로 제공된 링크를 계속 표시합니다. 그러나 페이스 북 (doh!)처럼 개발자가 행동을 바꾸고 리디렉션을 따르기 시작할 것이라는 보장은 없습니다.

YOURLS 단축키 서비스를 사용하는 경우 301 리디렉션을 302로 변경하는 "302- 대신"이라는 위대한 이름이 있습니다.

관련 문제