redireccionar - PHP CURL sigue redirigir para obtener el estado HTTP
redireccionar a una página con php (1)
establece CURLOPT_FOLLOWLOCATION
en 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
Si no está obligado a curl, también puede hacerlo con envoltorios HTTP estándar de PHP (que incluso puede ser curl y luego internamente). Código de ejemplo:
$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";
Véase también HEAD primero con PHP Streams .
Una pregunta relacionada es ¿Cómo se puede verificar si existe un archivo remoto usando PHP? .
Creé la siguiente función PHP para el código HTTP de una página web.
function get_link_status($url, $timeout = 10)
{
$ch = curl_init();
// set cURL options
$opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
CURLOPT_URL => $url, // set URL
CURLOPT_NOBODY => true, // do a HEAD request only
CURLOPT_TIMEOUT => $timeout); // set timeout
curl_setopt_array($ch, $opts);
curl_exec($ch); // do it!
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); // find HTTP status
curl_close($ch); // close handle
return $status;
}
¿Cómo puedo modificar esta función para seguir los redireccionamientos 301 y 302 (posibilidad de múltiples redireccionamientos) y obtener el código de estado HTTP final?