前段时间在使用 PHP 中的 get_headers 来获取头信息时,发现其中某个链接会返回多个 Location ,然后就疑惑了,难道 301 重定向这些可以同时多个?按理说只能重定向一次,且前后不能有输出?这到底是怎么一回事呢?
被这个问题困扰了好久,今晚在和NB君聊天时说起这个问题,他的一句话提醒了我,“这应该是 3 个请求结果吧”。
我仔细看了一下,果然,虽然只有 2 个 Location,但有 3 个请求,第 3 个的应答是 200。
我想了下,莫非 PHP 的 get_headers 是一直获取到最终的应答结果而不只是获取第一次请求的结果?
然后做了下验证,果然如此。
文件 a.php
<?php
# a.php
header("Location:http://localhost/b.php");
?>
文件 b.php
<?php
# b.php
header("Location:http://cn.bing.com");
?>
文件 c.php
<?php
# c.php
print_r(get_headers("http://localhost/a.php", 1));
?>
最终访问 c.php 得到的部分结果如下:
[Location] => Array
(
[0] => http://localhost/b.php
[2] => http://cn.bing.com
)
这个主题真简单,有时间我也要弄个超级简单色块版的
简单的适合我这种不懂设计的 😎
不错的文章! 😛