php - 为什么这个 header 位置重定向在内容已经被回显后起作用?

标签 php apache redirect header buffer

<?
echo "lalala";
header("Location: http://www.google.com/");

如果我把它放在一个普通的 php 文件中,并通过带有 mod-php(PHP 版本 5.3.2-1ubuntu4.10)的标准 apache2 服务器交付,则重定向到 google 会起作用。

<?
echo "lalala";
flush();
header("Location: http://www.google.com/");

这段代码显然不会产生有效的重定向。

我的问题是第一个代码是如何处理的以及它为什么有效。因为我记得这样的事情是不可能的。 mod-php 或 apache 是否足够智能以缓冲整个请求并在内容之前安排 header ?

和:

如果我确保不手动刷新输出,我可以依赖它吗?因为这会让我的申请更容易...

最佳答案

输出缓冲可能默认启用。如果您想依赖此功能,您应该手动启用它。

http://php.net/manual/en/function.ob-start.php

关于php - 为什么这个 header 位置重定向在内容已经被回显后起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7934351/

相关文章:

php - 我如何将这个巨大的分割查询变成一个查询

apache - 重定向到非 www 并同时执行 SSL 的最佳方法

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/http/HttpEntity 中出现异常

php - 如何使用 PHP 获取第一个子域?

PHP 如何在用户登录后从 mysql 表中选择并显示一行

apache - Sqoop - 无法找到或加载主类 org.apache.sqoop.Sqoop

apache - 如果域匹配则设置 cookie

jquery - Railsredirect_to不同的 Controller 然后调用方法

iis - URL 重写规则似乎是重定向而不是重写

php发送具有崩溃文本文件的电子邮件