2017-06-19 45 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>