如何从PHP显示默认的Apache404
我环顾四周,没有发现任何关于我需要什么的问题 我想做一个类似于“admin.php”的东西,但是如果条件不合适,我想让它返回404。然而,一个看起来与404页面其余部分不同的404将向攻击者提示“admin.php”是一个真实的文件 我不想创建自己的自定义404页面,我认为Apache默认的404对我来说已经足够好了。如何发送一个404来触发apache发送已经存在的错误文档。我假设这个错误文档在搜索后位于(Ubuntu):“/usr/share/apache2/error/HTTP\u NOT\u FOUND.html.var” 当我使用诸如:如何从PHP显示默认的Apache404,php,apache,apache2,ubuntu-14.04,Php,Apache,Apache2,Ubuntu 14.04,我环顾四周,没有发现任何关于我需要什么的问题 我想做一个类似于“admin.php”的东西,但是如果条件不合适,我想让它返回404。然而,一个看起来与404页面其余部分不同的404将向攻击者提示“admin.php”是一个真实的文件 我不想创建自己的自定义404页面,我认为Apache默认的404对我来说已经足够好了。如何发送一个404来触发apache发送已经存在的错误文档。我假设这个错误文档在搜索后位于(Ubuntu):“/usr/share/apache2/error/HTTP\u NOT
<?php
http_response_code(404);
die();
?>
它在web浏览器中的外观如下所示:
当我请求一个真正不在web服务器上的URL时,它看起来是这样的:
我想知道如何使用Apache的默认404页面使“/admin.php”看起来像第二个图像。有没有一种方法可以不使用.htaccess文件,只使用PHP来实现这一点?如果没有,我就必须弄清楚如何处理Apache设置。返回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>
404找不到
找不到
在此服务器上找不到请求的URL/
完整的php嵌入示例(已测试)如下所示:
if ( $_SESSION['login_user'] !== "admin" ) {
echo("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">");
echo("<html><head>");
echo("<title>404 Not Found</title>");
echo("</head><body>");
echo("<h1>Not Found</h1>");
echo("<p>The requested URL ".htmlspecialchars($_SERVER['REQUEST_URI'])." was not found on this server.</p>");
echo("<hr>");
echo("<address>".apache_get_version()." Server at ".$_SERVER['SERVER_ADDR']." Port ".$_SERVER['SERVER_PORT']."</address>");
echo("</body></html>");
exit;
}
if($\u会话['login\u user']!=“admin”){
回声(“”);
回声(“”);
回声(“404未找到”);
回声(“”);
回声(“未找到”);
echo(请求的URL.htmlspecialchars($\u SERVER['REQUEST\u URI'])。在此服务器上找不到。”;
回声(
);
echo(“.apache\u get\u version()”服务器位于“$\u服务器['Server\u ADDR']”端口“$\u服务器['Server\u端口]”);
回声(“”);
出口
}
这是一种糟糕的做法。你不应该重复每一行。echo也不需要支架。