2010-07-20 6 views
6

Tenemos un fragmento de código heredado que (ab) usa llamadas fopen() a recursos a través de HTTP: @fopen ('http://example.com').¿Los focos de PHP seguirán los redireccionamientos 301?

Queremos mover example.com a otro host y luego enviar 301 permanentemente movido. Sin embargo, no estamos del todo seguros de si @fopen() seguirá esto. Las pruebas iniciales me muestran que no es así. Pero tal vez echo de menos alguna pieza de configuración.

+1

¡Preveo la refacturación en su futuro! – Stephen

+0

Seguro. Esta redirección es el primer paso en esta refactorización, en realidad :) – berkes

Respuesta

3

Desde la versión 5.1.0, está el max_redirects option, lo que hace que la envoltura fopen HTTP sigue la redirección Location:

El número máximo de redirecciones a seguir. El valor 1 o menos significa que no se siguen redirecciones.

El valor predeterminado es 20.

Es posible que desee establecer explícitamente, en caso de que su configuración se desactiva esta. Un ejemplo modificado de los documentos:

<?php 

$url = 'http://www.example.com/'; 

$opts = array(
     'http' => array('method' => 'GET', 
         'max_redirects' => '20') 
     ); 

$context = stream_context_create($opts); 
$stream = fopen($url, 'r', false, $context); 

// header information as well as meta data 
// about the stream 
var_dump(stream_get_meta_data($stream)); 

// actual data at $url 
var_dump(stream_get_contents($stream)); 
fclose($stream); 
?> 
Cuestiones relacionadas