【问题标题】:Shortener wont work with Facebook link缩短器不适用于 Facebook 链接
【发布时间】:2014-07-12 17:01:19
【问题描述】:

我的应用程序有一个缩短器。例如www.example.com/Asy 重定向到www.facebook.com/id

如果有人在 Facebook 页面上分享该链接,Facebook 会以某种方式传递我的 URL 并直接将链接放入 Facebook,因此在这种情况下,当有人点击 Facebook 上的该链接时,我无法跟踪点击次数。

我使用的代码是这样的:

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

如果我想重定向到 google.com 一切都很好,但 Facebook 时间线上的 Facebook 页面不起作用。

如果有人将该链接放在 Twitter 上,首先访问我的应用,然后重定向到 Facebook,它会起作用。

【问题讨论】:

    标签: facebook laravel url-redirection


    【解决方案1】:

    听起来 Facebook 遵循重定向,意识到它指向自己 - 并将用户保留在 Facebook 中。你也许可以尝试检测谁在访问你的页面,看看它是否是 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);
       }
    
    }
    

    【讨论】:

      【解决方案2】:

      Facebook 链接解析在不久前改变了它的行为。它现在遵循 HTTP 重定向,直到到达最终 URL,并改为使用它来结束客户端。当您使用Facebook debug tool 调试您的 URL 时,这一点清晰可见。

      HTTP 301 重定向意味着“永久重定向”。 Facebook 跟随它是很正常的——因为这也是所有浏览器所做的。例如。如果您将在浏览器中插入一个链接,该链接使用 301 重定向到另一个页面 - 第一次点击将被翻译/记录,随后的点击将进行重定向,甚至无需点击短 URL 服务(如果您使用任何)。 为避免浏览器自动重定向,您应该将 HTTP 状态重定向行为从 301 更改为 302,这意味着“临时重定向”。但是,这并不能解决 Facebook 的问题。

      我成功强制 Facebook 显示带有重定向而不是最终 URL 的短 URL 的唯一方法是通过 publishing through Facebook API 结合 302 状态。通过 API 创建的帖子仍会显示数据中提供的链接;但是,由于它是 Facebook(doh!),因此无法保证那里的开发人员会改变行为并开始跟踪重定向。

      如果您使用的是 YOURLS 缩短服务,有一个很棒的叫做“302-instead”,它将 301 重定向更改为 302。

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        相关资源
        最近更新 更多