Php 404 Not Found Header

时间:2013-04-27 16:14:17

标签: php header

我试图理解3个简单的PHP代码行的组合, 这是代码:

ob_end_clean();
header('HTTP/1.0 404 Not Found');
exit;

所以这是代码,因为我理解第一行 ob_end_clean(); ,可以帮助例如 BOM(字节顺序标记),所以第一行是为了防止任何先前的输出。

第二行标题('HTTP / 1.0 404 Not Found'); 是标题。

第三行退出会终止脚本执行。

如果我删除了第一行,并且我在文档中得到了 BOM ,我会得到空白页(No 404)。

如果我删除了第三行(有和没有BOM ),我得到的页面我想要没有空白页面而没有404。

  • Mabye如果有人能解释为什么我应该使用退出之后 404标题
  • 为什么 BOM 我没有收到“标题已发送错误”

谢谢大家,祝你有愉快的一天。

2 个答案:

答案 0 :(得分:10)

  

如果我删除了第一行并且我在文档中得到了一张BOM,那我就空白了   页面(No 404)。   你得到空白404因为你没有在那里定义内容......

header('HTTP/1.0 404 Not Found');

只是通知用户在404错误页面网站上... 如果您想为用户显示404通知,可以通过加载404.html文件

来完成
if(strstr($_SERVER['REQUEST_URI'],'index.php')){
  header('HTTP/1.0 404 Not Found');
  readfile('404missing.html');
  exit();
}

或直接

if (strstr($_SERVER['REQUEST_URI'],'index.php')){
    header('HTTP/1.0 404 Not Found');
    echo "<h1>Error 404 Not Found</h1>";
    echo "The page that you have requested could not be found.";
    exit();
}

退出函数是因为你必须阻止执行另一个PHP代码,这可能是在if之后或者可能在以后执行,只需它END

答案 1 :(得分:1)

  

我为什么要在404标题之后使用退出

这样就不会再执行任何代码了。如果没有,那么,没有必要在这种情况下。虽然这是一个很好的习惯。

  

为什么使用BOM我没有得到“标题已发送错误”

您没有配置PHP安装以向最终用户显示错误和通知。