If you set the curl option CURLOPT_FOLLOWLOCATION
, cURL will follow the location redirect for you.
If you want to get the headers, set the option CURLOPT_HEADER
to 1, and the HTTP response you get back from curl_exec()
will contain the headers. You can them parse them for the location.
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1); // return HTTP headers with response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return the response rather than output it
$resp = curl_exec($ch);
list($headers, $response) = explode("\r\n\r\n", $resp, 2);
// $headers now has a string of the HTTP headers
// $response is the body of the HTTP response
$headers = explode("\n", $headers);
foreach($headers as $header) {
if (stripos($header, 'Location:') !== false) {
echo "The location header is: '$header'";
}
}
See all of the options at curl_setopt().