何时发送HTTP状态代码?

Jus*_*ton 3 php header http http-headers

目前,在我的PHP脚本中,当用户尝试访问不存在或不属于该用户的内容时,我将用户重定向到自定义404未找到错误页面.像这样:

header('Location: http://www.mydomain.com/error/notfound/');
exit;
Run Code Online (Sandbox Code Playgroud)

我意识到上面的header()调用默认发送302重定向状态代码.

但是,我不明白的是,我应该发送404未找到的状态代码.在我重定向用户之前?或者当我显示/ error/notfound / page时?

谢谢你的帮助!

Pim*_*ger 12

你应该做这样的事情:

header("HTTP/1.0 404 Not Found");
include 'error.php';
die();
Run Code Online (Sandbox Code Playgroud)

  • 如果浏览器使用HTTP/1.1进行连接会发生什么?php强制apache与mod_php发送回HTTP/1.1响应??? (2认同)

Pet*_*ley 9

您根本不执行重定向404错误.

你真正想要做的是发送404状态标题,然后用404页面的正文替换当前输出.

有多种方法可以做到这一点,这在很大程度上取决于您的网站的结构.MVC应用程序通常会向前发送.我已经看到其他系统抛出异常,然后注册的异常处理程序负责显示404页面.

无论如何,粗略的步骤是

  1. 确定内容无效
  2. 打破当前的执行
  3. 清除任何输出,如果有的话.
  4. 发送404状态标头
  5. 发送404页面的内容