我创建了https://www.google.com的缩短 URL 。
我使用 URL 缩短器来缩短关于转换后的链接
现在,当我单击缩短的链接时,他们会将我重定向到https://www.google.com。
在上述情况下,如何在不重定向到 Google.com 的情况下使用 PHP 从缩短的链接中知道最终链接?
如何在不使用 PHP 转到原始/最终链接的情况下获取重定向次数(用于递归缩短 URL)?
我创建了https://www.google.com的缩短 URL 。
我使用 URL 缩短器来缩短关于转换后的链接
现在,当我单击缩短的链接时,他们会将我重定向到https://www.google.com。
在上述情况下,如何在不重定向到 Google.com 的情况下使用 PHP 从缩短的链接中知道最终链接?
如何在不使用 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()
参数。
ps 你可以设置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;