I have a 404.php file in my site's main directory and I was using header('Location: 404.php');
for a while until someone said that you should use header('HTTP/1.0 404 Not Found');
instead. So I replaced it with that and then added: ErrorDocument 404 /404.php
to my apache config file and restarted the server but it doesn't work.
I tried different variations including ErrorDocument 404 404.php
and ErrorDocument 404 mywebite/404.php
but to no avail.
What I mean by doesn't work is that earlier when using header('Location: 404.php');
it would redirect to the 404.php file but when I replace it with header('HTTP/1.0 404 Not Found');
it seems to just skip over the line and not do anything. It most certainly is not redirecting. The reason I am calling for the redirect is because if a $_GET header value is not recognized the page should 404.
Best Answer
No, it probably is actually working. It's just not readily visible. Instead of just using the
header
call, try doing that, then including404.php
, and then callingdie
.You can test the fact that the
HTTP/1.0 404 Not Found
works by creating a PHP file named, say,test.php
with this content:Then viewing the result with
curl -D /dev/stdout
reveals: