Redirect 在IE6中使用@header()重定向后,整个页面变为空白

Redirect 在IE6中使用@header()重定向后,整个页面变为空白,redirect,internet-explorer-6,Redirect,Internet Explorer 6,这是一个登录页面。验证后,用户将重定向到主页: @header("Content-type: text/html; charset=utf-8"); @header('Location: index.php'); @header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 @header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past 但是如果

这是一个登录页面。验证后,用户将重定向到主页:

@header("Content-type: text/html; charset=utf-8");
@header('Location: index.php');
@header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
@header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past  

但是如果IE6出现,页面将变为空白!怎么用?这只是第一次发生;之后它就会正常工作了

为什么要抑制可能发生的警告/错误?我要说的是,先去掉
@
,然后告诉我们到底发生了什么。

如果已经发送了任何输出,header()将不起作用。这包括空格、空行或其他内容。在调用header之前,确保没有任何输出

作品:

<?php
header('Location: index.php');
?>

不起作用

 <?php
header('Location: index.php');
?>


并删除@,它会吃掉尝试提供给您的任何有用信息头。

您还可以使用javascript从客户端重定向:

而不是:

@header('Location: index.php');
客户端重定向:

echo "<script>document.location.replace('index.php');</script>";
echo“document.location.replace('index.php');”;

我已经搜索了一个小时左右的类似问题的答案。IE6似乎在压缩内容方面存在问题。只需在服务器上禁用mod_deflate,就可以解决IE6的问题。特别是6.0.29版似乎出现了这个错误


看看

如果只是重定向,为什么需要所有其他标题?为什么不保持一条线?标题('Location:index.php');我从Another项目中复制了它。此外,在调用header()后停止执行是一种很好的做法,这样就不会执行其他代码。你可以使用die()或exit()来实现这一点。实际上,我通常会写一个带有链接的快速页面,以防万一header()重定向发生错误。我同意,在使用位置重定向调用header()后,最好尽快终止。使用位置头会更好。这将在所有浏览器和用户代理中工作,无论发生什么情况。任何价值其一半的HTTP库都可以识别位置。浏览器之外的代理很少会识别Javascript,而且很多识别Javascript的代理也不一定会执行它。