如何在不重定向原始 URL 的情况下获取短 URL 服务的信息或实际信息
Posted
技术标签:
【中文标题】如何在不重定向原始 URL 的情况下获取短 URL 服务的信息或实际信息【英文标题】:How to get info or actual of short URL service without redirect on original 【发布时间】:2013-11-25 19:57:59 【问题描述】:我创建了 https://www.google.com 的缩短 URL。
我使用了 URL 缩短器来缩短转换后的链接
现在,当我点击缩短的链接时,他们会将我重定向到 https://www.google.com。
在上述情况下,如何在不重定向到 Google.com 的情况下使用 php 从缩短的链接中知道最终链接?
如何在不使用 PHP 转到原始/最终链接的情况下获取重定向次数(用于递归缩短 URL)?
【问题讨论】:
cURL 可以解决这两个问题。 亲爱的 glavic,感谢您的回复。任何示例或网址? us1.php.net/curl_getinfo 【参考方案1】:更简单的解决方案是将 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
= 没有。发生的重定向
看看at other great curl_getinfo()
parameters你可以获取。
附言您可以将CURLOPT_HEADER
设置为true
以查看到底发生了什么。
【讨论】:
【参考方案2】:遵循 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;
【讨论】:
谢谢哈里!!如上所述显示递归缩短网址是否有帮助? 您需要将其包装在一个 while 循环中,该循环在 $http_status 不是 301 时结束。此外,不断增加一些变量以获取有多少重定向的计数。 @Newbie123:如果您发现对 SO 有用的答案(或问题),别忘了点赞。以上是关于如何在不重定向原始 URL 的情况下获取短 URL 服务的信息或实际信息的主要内容,如果未能解决你的问题,请参考以下文章
使用HttpClient,在301的情况下如何防止自动重定向并获取原始状态码和转发Url [重复]
如何在不更改web.config文件中的URL的情况下重定向域?