首页 文章

如何从PHP显示默认的Apache 404

提问于
浏览
2

我环顾四周,并没有发现任何有关我需要的问题 .

我想做一个类似“admin.php”的东西,但我想在条件不对的情况下返回404 . 但是,与404页面的其余部分看起来不同的404将向攻击者暗示“admin.php”是真实文件 .

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

当我使用以下内容时:

<?php
    http_response_code(404);
    die();
?>

它在Web浏览器中看起来像这样:

enter image description here

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

enter image description here

我想知道如何使用Apache的默认404页面使“/admin.php”看起来像第二个图像 . 有没有办法在不使用.htaccess文件的情况下执行此操作,只需从PHP进行操作即可如果没有,我只需要弄清楚如何搞乱Apache设置 .

1 回答

  • 3

    没有办法通过返回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>
    

相关问题