Я использую следующий код, чтобы получить код http-статуса последнего URL (после всех перенаправлений):
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_HEADER, true);
// we want headers
//curl_setopt($handle, CURLOPT_NOBODY, true);
curl_setopt($handle, CURLOPT_TIMEOUT, 5);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_USERAGENT, 'my bot');
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);
Тем не менее, cURL не следует за перенаправлениями. F.E. если я использую www.raffiniert.biz/kunden, он показывает простой 301, вместо того, чтобы следовать www.raffiniert.biz/kunden/
В чем дело?
Спасибо
Рафаэль
Я получил ожидаемый ответ, используя точно такой же, как ваш код.
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 01 Dec 2014 23:19:56 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 309
Connection: keep-alive
Location: http://www.raffiniert.biz/kunden/
Cache-Control: max-age=0
Expires: Mon, 01 Dec 2014 23:19:56 GMT
Vary: Accept-Encoding
HTTP/1.1 403 Forbidden
Server: nginx
Date: Mon, 01 Dec 2014 23:19:57 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 277
Connection: keep-alive
Vary: Accept-Encoding
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /kunden/
on this server.</p>
<hr>
<address>Apache Server at www.raffiniert.biz Port 80</address>
</body></html>
Вы должны проверить …
error_reporting(-1);
или же
if (ini_get('safe_mode') || (string)ini_get('open_basedir') !== '') {
exit('You have no permission to set CURLOPT_FOLLOWLOCATION');
}
Других решений пока нет …