PHP标头重定向在生产中不起作用,空白页

问题描述 投票:0回答:5

我要把毛巾扔进去。有人可以帮我解决这个问题。 在我的本地开发服务器上,这部分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();

?>
php iis iis-7 fastcgi
5个回答
3
投票

确保php标记前没有空格


1
投票

尝试这个..

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

我只是在冒号(:)和url之间添加了一个空格。.我不知道这是发生在其他人身上的,但是有时这种事发生在我身上,有时无论出于什么原因都可以使用。

另外,您是否尝试过相对路径? 还是在其他页面上,我的意思是“页眉位置”在其他地方有效吗? 还是仅在此脚本上发生?


1
投票

您可以尝试的一些方法是:

  • 发送重定向标头之前,请检查headers_sent()是否为true
  • 设置error_reporting(E_ALL)ini_set('display_errors', 1)
  • 使用Firebug检查哪些(如果有)标头被发送到浏览器

0
投票

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


0
投票

这些都不起作用。

我最终回显了meta重定向。

我也可以回应一个javascript location.replace

© www.soinside.com 2019 - 2024. All rights reserved.