Php cURL返回一个相对的";地点:“;url,如何获取完整的url?

Php cURL返回一个相对的";地点:“;url,如何获取完整的url?,php,redirect,curl,http-status-code-301,http-status-code-302,Php,Redirect,Curl,Http Status Code 301,Http Status Code 302,我使用cURL是为了绕过重定向(301302)和特殊的URL,比如adf.ly等等。我有一个工作代码,但无法修复此特定问题: 当我使用cURL来跟踪位置参数时,在某些网站上,最后一次重定向可能在其位置:结果中有一个相对url 为了说明这一点,我在自己的网站上添加了这种重定向。我正在使用 header("Location: /maintenance"); exit(); 在我的PHP代码中进行演示。我提出了这个快速卷曲的要求: $url = "http://deci.deals/post/99

我使用cURL是为了绕过重定向(301302)和特殊的URL,比如
adf.ly
等等。我有一个工作代码,但无法修复此特定问题:

当我使用cURL来跟踪
位置
参数时,在某些网站上,最后一次重定向可能在其
位置:
结果中有一个相对url

为了说明这一点,我在自己的网站上添加了这种重定向。我正在使用

header("Location: /maintenance"); exit(); 
在我的PHP代码中进行演示。我提出了这个快速卷曲的要求:

$url = "http://deci.deals/post/99/comment/427";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1712.4 Safari/537.36');
curl_setopt($ch, CURLOPT_HEADER, 1);
$data = curl_exec( $ch );
curl_close($ch);

echo("<br/>CURRENT_URL: ".$url);

if ( preg_match_all( '/Location:\s*(.+)\s*$/im', $data, $matches, PREG_SET_ORDER ) ) {
    $last = array_pop( $matches );
    echo "<br/>FOUND: ".$last[1];
}
如您所见,
位置
值是一个相对URL。有没有办法得到绝对URL而不是这个

谢谢

从维基百科页面:

相对URL是不包括方案或主机的URL。在里面 为了便于理解,它们必须与 原始请求

客户要求:

服务器响应:

该位置的URL由客户端扩展到


我正在考虑连接它们,但我认为
CURLOPT\u FOLLOWLOCATION
可能会提前“跳转”重定向,然后我将无法依赖原始URL,如果我错误,请更正echo curl\u getinfo($ch,CURLINFO\u有效URL)@机器人70谢谢!信任这个URL而不是
位置
结果安全吗?我不知道。这取决于你。
CURRENT_URL: http://deci.deals/post/99/comment/427
FOUND: /maintenance
GET /blog HTTP/1.1
Host: www.example.com
HTTP/1.1 302 Found
Location: /articles/
http://www.example.com/articles/