为什么我的 PHP 应用不会发送 404 错误?

2022-08-30 06:54:02
if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
    header('HTTP/1.0 404 Not Found');
}

为什么这行不通?我得到一个空白页。


答案 1

您的代码在技术上是正确的。如果您查看该空白页的标题,则会看到 404 标头,其他计算机/程序将能够正确地将响应标识为找不到文件。

当然,您的用户仍然是SOL。通常,404由Web服务器处理。

  • 用户:嘿,在这个URI网络服务器上,你有什么东西给我吗?
  • 网络服务器:不,我没有,404!下面是要显示 404 的页面。

问题是,一旦Web服务器开始处理PHP页面,它就已经通过了它将处理404的点。

  • 用户:嘿,在这个URI网络服务器上,你有什么东西给我吗?
  • Webserver:是的,我愿意,这是一个PHP页面。它会告诉你响应代码是什么
  • PHP: 嘿,OMG 404!!!!!!!
  • Webserver:好吧,废话,404页面的人已经回家了,所以我只会发送PHP给我的任何东西

除了提供 404 标头之外,PHP 现在还负责输出实际的 404 页面。


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

如果您查看最后两条回声线,您将看到内容。您可以根据需要对其进行自定义。


推荐