-2

所以最奇怪的事情正在发生,我真的很难过。我认为我不需要发布代码示例,我会告诉你原因。

header("location:blah.php")在我的本地主机上运行 PHP,它工作正常。当我将所有内容迁移到我的1and1托管帐户时,标题标签根本不起作用。这显然与来源无关。

任何想法为什么当我把它放在我的其他主机上时它不会工作?

4

2 回答 2

3

尝试使用绝对 URI,而不是相对 URI:

header("Location: http://yourhost.com/blah.php");

你可以参考http://php.net/manual/en/function.header.php 它说:

HTTP/1.1 需要绝对 URI 作为 » Location 的参数:包括方案、主机名和绝对路径,但有些客户端接受相对 URI。您通常可以使用 $_SERVER['HTTP_HOST']、$_SERVER['PHP_SELF'] 和 dirname() 自己从相对的 URI 中创建绝对 URI

顺便说一句,请确保您在header()通话之前没有发送任何输出。甚至没有空行。

于 2013-04-07T10:20:38.250 回答
2
error_reporting(E_ALL);
if(!headers_sent()){
    header("location:blah.php");
    exit("Headers aren't set");
} else{
    exit("Headers already sent");
}

试试看.. 如果标头已发送,您将收到第二条消息。如果未发送标头,则必须重定向,否则将收到第一条消息。

如果它们被发送,您必须找到它的确切位置。通常 php 错误报告会告诉您。

于 2013-04-07T10:23:41.323 回答