PHP标头重定向无法正常工作

Jas*_*vis 10 php redirect

我知道这已被覆盖过,但我找不到答案,

我一直用这个;

header("Location: http://www.website.com/");
exit();
Run Code Online (Sandbox Code Playgroud)

这一直在我当前的项目中工作,突然间它在我的任何浏览器中都无法运行

我想找出问题并修复它而不是使用它

echo "<script type='text/javascript'>window.top.location='http://website.com/';</script>";
Run Code Online (Sandbox Code Playgroud)

我也启用了错误报告,但没有显示任何错误

// SET ERROR REPORTING
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
ini_set('display_errors', TRUE);
Run Code Online (Sandbox Code Playgroud)

任何想法为什么它不起作用?

Mik*_*e B 21

尝试:

error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);


flush();
header("Location: http://www.website.com/");
die('should have redirected by now');
Run Code Online (Sandbox Code Playgroud)

看看你得到了什么.你不应该在你的error_reporting()调用中使用^(xor),因为你无意中要求所有错误除了通知和警告..这就是"已经发送的头文件"错误.

编辑:

还可以尝试将flush()放在header()调用的正上方.

  • 在使用header()之前,您无法获得任何输出 (4认同)

Tyl*_*ter 14

尝试删除位置之间的空格和http中的第一个h.

header("Location: http://www.website.com/");
exit();
Run Code Online (Sandbox Code Playgroud)

变成

header("Location:http://www.website.com/");
exit();
Run Code Online (Sandbox Code Playgroud)

我在WAMP服务器上遇到了这个问题.

虽然它应该不是问题,但考虑到它是如何在PHP文档中记录的.但无论如何你应该尝试一下.我知道在很多情况下它对我有用.


T.T*_*dua 13

常见问题:

1)命令echo..之前不应有任何输出(即HTML代码)header(.......);.

2)不应该有一个空白(或换行之前)<?php和后?>标记.

3) 金色规则!- 文件(和其他include()-d文件)应该没有BOM编码的UTF8(而不仅仅是UTF-8).这在许多情况下都是问题(因为典型的UTF8编码文件在文件输出的开头有一些特殊的字符)!!!!!!!!!!!

4)重定向后,header(...);您必须使用exit;

5)推荐做法 - 在参考中始终使用301或302:

header("location: http://example.com",  true,  301 );  exit;
Run Code Online (Sandbox Code Playgroud)

6)如果以上都没有帮助,请使用JAVSCRIPT重定向(但谷歌强烈建议不要这样做),但这可能是最后的机会...:

echo "<script type='text/javascript'>window.top.location='http://example.com/';</script>"; exit;
Run Code Online (Sandbox Code Playgroud)


kar*_*rto 5

尝试这个。为我工作。

echo "<meta http-equiv='refresh' content='0;url=http://www.yoursite.com'>";