2017-06-19 26 views
1

我环顾四周,并没有发现任何有关我需要的问题。如何从PHP显示默认的Apache 404

我想做一个类似于“admin.php”的东西,但是如果条件不正确,我想使它返回404。但是,404页面与404页面的其余部分看起来不同,会向攻击者暗示“admin.php”是一个真实文件。

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

当我使用的东西,如:

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

它看起来像这样在网页浏览器:

enter image description here

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

enter image description here

我想知道如何使用Apache的默认404页面使“/admin.php”看起来像第二张图片。有没有办法做到这一点,而不使用.htaccess文件,只是从PHP?如果不是,那么我只需要弄清楚如何混淆Apache设置。

回答

1

没有办法做到这一点只是通过返回一个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>