2010-07-20 9 views
6

Nous avons un fragment de code hérité qui (ab) utilise les appels fopen() aux ressources via HTTP: @fopen ('http://example.com').Est-ce que les PSP vont suivre les redirections 301?

Nous voulons déplacer example.com vers un autre hôte, puis envoyer 301 déplacé définitivement. Cependant, nous ne sommes pas entièrement sûrs que @fopen() suivra cela. Les premiers tests me montrent que ce n'est pas le cas. Mais peut-être que je manque un morceau de configuration.

+1

Je prévois refactoring dans votre avenir! – Stephen

+0

Bien sûr. Cette redirection est la première étape de ce refactoring, en fait :) – berkes

Répondre

3

Depuis la version 5.1.0, il y a le max_redirects option, ce qui rend l'emballage HTTP fopen suivre la redirection Location:

Le nombre maximum de redirections à suivre. La valeur 1 ou moins signifie qu'aucune redirection n'est suivie.

Par défaut 20.

Vous pouvez définir explicitement, dans le cas où votre config désactive cette. Un exemple modifié à partir des docs:

<?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); 
?> 
Questions connexes