I’m creating a PHP CMS and have some system pages like a 404 page, a maintenance page, and an unauthorized access page. When Page A isn’t found, the CMS will redirect to the 404 page; if the user doesn’t have access to Page B, it will redirect to the unauthorized access page, etc.
I’d like to use the proper status code in the header of each page, but I need clarification on how to handle the header/redirect. Do I put the 404 header on Page A and then redirect to the 404 page or do I put the 404 status on the 404 page itself? Also, if the latter is the correct answer, what kind of redirect should I use to get there, a 301 or a 302?
If a user arrives on page A and that page doesn’t exist, then do not redirect : just send a 404 error code from page A — and, to be nice for your user, an HTML content indicating that the page doesn’t exist.
This way, the browser (and it’s even more true for crawlers ! ) will know that the page that is not found is page A, and not anything else you’d have tried to redirect to.
Same for other kind of errors, btw : if a specific URL corresponds to an error, then, the error code should be sent from that URL.
Basically, something as simple as this should be enough :
(Well, you could output something nicer, of course ; but you get the idea 😉 )