установите CURLOPT_FOLLOWLOCATION
на TRUE
.
$opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
CURLOPT_URL => $url, // set URL
CURLOPT_NOBODY => true, // do a HEAD request only
CURLOPT_FOLLOWLOCATION => true // follow location headers
CURLOPT_TIMEOUT => $timeout); // set timeout
Если вы не обязаны скручиваться, вы можете сделать это и со стандартными PHP http-обертками (которые могут быть даже скрученными, а не внутренними),Пример кода:
$url = 'http://example.com/';
$code = FALSE;
$options['http'] = array(
'method' => "HEAD"
);
$context = stream_context_create($options);
$body = file_get_contents($url, NULL, $context);
foreach($http_response_header as $header)
{
sscanf($header, 'HTTP/%*d.%*d %d', $code);
}
echo "Status code (after all redirects): $code<br>\n";
См. Также Сначала HEAD с PHP Streams .
Смежный вопрос Как проверить, существует ли удаленный файл с использованием PHP? .