2009-01-09 17 views

Respuesta

6

En realidad, me encontré con esto funciona mejor:

function GetURL($URL) 
    { 
      $ch = curl_init($URL); 

      curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 


      curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 

      curl_exec($ch); 

      $code = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 

      curl_close($ch); 

      return $code; 
    } 
16
$ch = curl_init('http://www.yahoo.com/'); 
curl_exec($ch); 
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
if (($code == 301) || ($code == 302)) { 
    //This was a redirect 
} 
+0

Cool - ¿hay alguna forma de saber a dónde quiere redireccionar? – GeoffreyF67

+0

Pruebe con una maldición normal ... debería indicarle hacia dónde quiere que vaya. – alex

+0

Buena respuesta, que debería cubrir casi todos los casos posibles. Creo que 303 y 307 también constituyen redireccionamientos, aunque son mucho menos comunes: solo los he visto en documentos de especificaciones, no en el mundo real. –

3

Recuerde que ninguna de las respuestas que se dan generalmente para esta pregunta tiene en cuenta la redirección causada por Javascript codificado dentro del documento devuelto (o Creo que una etiqueta meta-refresh en el HTML.) Por lo que es posible que no importa lo que perderá ciertos tipos de "redirecciones" al probar con este tipo de código.

Lamentablemente, la única forma de evitar esto es tener un navegador web real que llegue a la página web y modificar el navegador web de tal forma que informe las redirecciones de javascript y meta-refresh.

¡Salud!

+0

En realidad, podría usar el motor de javascript que tiene mozilla aunque no recuerdo su nombre en este momento. Pero sí, tienes razón en ese curl que no captaría la redirección de JavaScript. – GeoffreyF67

Cuestiones relacionadas