如何从PHP显示默认的Apache 404

Eli*_*ter 2 php apache apache2 ubuntu-14.04

我环顾四周,没有发现关于我所需要的任何问题。

我想制作一个类似“ admin.php”的东西,但如果条件不正确,我想在返回404的地方制作它。但是,看起来与所有404页的其余页面都不相同的404将向攻击者暗示“ admin.php”是真实文件。

我不想创建自己的自定义404页面,我认为Apache的默认404对我来说已经足够了。如何发送触发apache的404,以发送已经的ErrorDocument。搜索后,我认为此错误文档位于(在Ubuntu中):“ /usr/share/apache2/error/HTTP_NOT_FOUND.html.var”

当我使用类似的东西时:

<?php
    http_response_code(404);
    die();
?>
Run Code Online (Sandbox Code Playgroud)

在网络浏览器中看起来像这样:

在此处输入图片说明

当我请求真正不在Web服务器上的URL时,它看起来像这样:

在此处输入图片说明

我想知道如何使用Apache的默认404页面使“ /admin.php”看起来像第二个图像。有没有办法只使用PHP而不使用.htaccess文件呢?如果没有,那么我只需要弄清楚如何使用Apache设置即可。

sjd*_*aws 6

无法通过返回404来执行此操作,因为Apache将找到该文件,因此将不再抛出错误页面。最好的办法是模拟Apache错误页面:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?> was not found on this server.</p>
</body></html>
Run Code Online (Sandbox Code Playgroud)