如何在没有原始重定向的情况下获取短网址服务的信息或实际信息

时间:2013-11-13 09:27:40

标签: php

我创建了www.google.com的简短网址:http://goo.gl/9omWn2

我再次使用缩短服务来缩短转换后的链接     http://goo.gl/9omWn2进入http://ow.ly/qLGys

现在当我点击上面的ow.ly链接时,它会将我重定向到www.google.com。

我想知道的是......

  1. 如果在上述情况下使用php而不是重定向到google.com的http://ow.ly/qLGys缩短链接,如何知道最终链接?

  2. 如何在不使用php的原始/最终链接的情况下获取重定向次数(用于递归缩短网址)?

  3. 谢谢!

2 个答案:

答案 0 :(得分:4)

更简单的解决方案是将curl设置为仅提取标题(忽略正文),并按照位置进行操作;然后使用curl_getinfo()函数获取最后一个url而不是。重定向:

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL => $url,
    CURLOPT_HEADER => false,
    CURLOPT_NOBODY => true,
    CURLOPT_FOLLOWLOCATION => true,
));
curl_exec($ch);
$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$redirect_count = curl_getinfo($ch, CURLINFO_REDIRECT_COUNT);
curl_close($ch);

现在你有变量:

  • $last_url =重定向循环中的最后一个网址
  • $redirect_count =不。发生的重定向

看看你可以获取的at other great curl_getinfo() parameters

P.S。您可以将CURLOPT_HEADER设置为true,以确切了解正在发生的事情。

答案 1 :(得分:0)

按照HTTP响应,直到您的响应代码不同于301。

您可以获取HTTP响应代码和下一个网址:

$http = curl_init($url);
$result = curl_exec($http);
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
$next_url = curl_getinfo($http, CURLINFO_REDIRECT_URL);
curl_close($http);
echo $http_status;
echo $next_url;