我创建了www.google.com的简短网址:http://goo.gl/9omWn2
我再次使用缩短服务来缩短转换后的链接 http://goo.gl/9omWn2进入http://ow.ly/qLGys
现在当我点击上面的ow.ly链接时,它会将我重定向到www.google.com。
我想知道的是......
如果在上述情况下使用php而不是重定向到google.com的http://ow.ly/qLGys缩短链接,如何知道最终链接?
如何在不使用php的原始/最终链接的情况下获取重定向次数(用于递归缩短网址)?
谢谢!
答案 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;