1

我创建了https://www.google.com的缩短 URL 。

我使用 URL 缩短器来缩短关于转换后的链接

现在,当我单击缩短的链接时,他们会将我重定向到https://www.google.com

  1. 在上述情况下,如何在不重定向到 Google.com 的情况下使用 PHP 从缩短的链接中知道最终链接?

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

4

2 回答 2

4

更简单的解决方案是将 curl 设置为仅获取标题(忽略正文)并跟踪位置;然后使用curl_getinfo()函数获取最后一个 url 和 no。重定向:

$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= 重定向循环中的最后一个 URL
  • $redirect_count= 没有。发生的重定向

看看您可以获取的其他重要curl_getinfo()参数。

ps 你可以设置CURLOPT_HEADERtrue看看到底发生了什么。

于 2013-11-13T09:46:30.613 回答
0

遵循 HTTP 响应,直到您到达不同于 301 的响应代码。

您可以像这样获取 HTTP 响应代码和下一个 url:

$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;
于 2013-11-13T09:39:17.993 回答