PHPs会不会遵循301重定向?

时间:2010-07-20 11:55:25

标签: php http sockets redirect http-status-code-301

我们有一段遗留代码,(ab)通过HTTP使用fopen()对资源的调用:

@fopen('http://example.com')

我们希望将example.com移至另一台主机,然后发送“301 Permanently Moved”,但是,我们并不完全确定@fopen()是否会遵循这一规定。

初步测试显示它没有。但也许我会错过一些配置文章。

1 个答案:

答案 0 :(得分:5)

从版本5.1.0开始,有max_redirects option,这使得fopen HTTP包装器遵循Location重定向:

  

要遵循的最大重定向次数。值1或更小意味着不遵循重定向。

     

默认为20。

您可能希望明确设置它,以防您的配置禁用此功能。从文档修改的示例:

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