141
Your code is technically correct. If you looked at the headers of that blank page, you'd see a 404 header, and other computers/programs would be able to correctly identify the response as file not found.
Of course, your users are still SOL. Normally, 404s are handled by the web server.
The problem is, once the web server starts processing the PHP page, it's already passed the point where it would handle a 404
In addition to providing a 404 header, PHP is now responsible for outputting the actual 404 page.
A little bit shorter version. Suppress odd echo.
if (strstr($_SERVER['REQUEST_URI'],'index.php')){
header('HTTP/1.0 404 Not Found');
exit("<h1>404 Not Found</h1>\nThe page that you have requested could not be found.");
}
If you want the server’s default error page to be displayed, you have to handle this in the server.