2010-07-20 11 views
6

Abbiamo un codice legacy che (ab) utilizza le chiamate fopen() alle risorse su HTTP: @fopen ('http://example.com').Le fopen di PHP seguiranno i reindirizzamenti 301?

Vogliamo spostare example.com a un altro host e quindi inviare 301 permanentemente spostati. Tuttavia, non siamo del tutto sicuri se @fopen() seguirà questo. I test iniziali mi mostrano che non è così. Ma forse mi manca qualche pezzo di configurazione.

+1

Prevedo il refactoring nel tuo futuro! – Stephen

+0

Di sicuro. Questo reindirizzamento è il primo passo in questo refactoring, in realtà :) – berkes

risposta

3

A partire dalla versione 5.1.0, c'è il max_redirects option, il che rende l'involucro HTTP fopen seguire il reindirizzamento Location:

Il numero massimo di reindirizzamenti da seguire. Valore 1 o inferiore significa che non vengono seguiti reindirizzamenti.

Default a 20.

Si potrebbe desiderare di impostare in modo esplicito, nel caso il vostro config disabilita questa. Un esempio modificato dai documenti:

<?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); 
?> 
Problemi correlati