PHP标头重定向不适用于生产,空白页面

时间:2011-06-05 08:58:29

标签: php iis iis-7 fastcgi

我准备扔进去。有人可以帮我解决这个问题。 在我的本地开发服务器上,这个PHP的工作正常,它只是通过构造一些变量的url来进行重定向。所以我按预期重定向到此页面。

$status = "0"; //unsubscribed
header('Location:http://www.skandium.com/manage-your-mailing-list.asp?status='.$status);
die();

在生产服务器上,我只得到一个空白页面。我知道PHP页面本身是有效的,因为在此行之前和之前发生的所有其他事情都可以正常工作。我可以用简单的echo替换此行,并且可以看到URL也正确。

其他详情:

  • 托管在windows box(dev也是windows)
  • 通过FASTCGI运行的相同PHP版本

编辑:情节变浓

以下代码在新页面中自行适用于生产。仍然没有解释为什么上面的代码在本地工作而不是生产。我似乎已经排除了所有标题重定向语句本身并不是罪魁祸首。

<?php 

//test.php

//prevent page caching
header("Cache-Control: no-cache"); 
header("Expires: -1");

$status = "0"; //unsubscribed

header('Location:http://www.abc.com/manage-your-mailing-list.php?status='.$status);
die();

?>

5 个答案:

答案 0 :(得分:3)

确保在php标记

之前没有空格

答案 1 :(得分:1)

试试这个..

header('Location: http://www.abc.com/manage-your-mailing-list.php?status='.$status)

我只是在冒号(:)和网址之间添加一个空格。 我不知道这发生在其他人身上,但有时这种事情发生在我身上,有时无论出于何种原因这都有效。

另外,你试过相对路径吗? 或者在其他页面,我的意思是“标题位置”在其他地方有效吗? 或者它只发生在这个脚本上?

答案 2 :(得分:1)

您可以尝试的一件事是:

  • 在发送重定向标题
  • 之前,检查headers_sent()是否为true
  • 设置error_reporting(E_ALL)ini_set('display_errors', 1)
  • 使用firebug检查发送到浏览器的标题(如果有)

答案 3 :(得分:0)

文件是UTF-8编码的吗? 任何输出都可以阻止执行代码,包括BOM。也许编码没有明确设置,但你的开发机器假设UTF-8(并忽略了标记)而你的生产服务器没有。

答案 4 :(得分:0)

这些都不起作用。

我最终回复了meta重定向。

我也可以回复javascript location.replace