如何在不重定向原始URL的情况下获取短URL服务的信息或实际


How to get info or actual of short URL service without redirect on original

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

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

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

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

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

更简单的解决方案是将 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()参数。

附言您可以CURLOPT_HEADER设置为true,以准确查看正在发生的事情。

遵循 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;