views:

109

answers:

3

I have a php web page that now uses custom error pages when a page is not found. The custom error pages are included in PHP.

So when somebody types in an URL that does not exists I just include an error page, and the error page starts with:

<?php header("HTTP/1.1 404 Not> Found"); ?>

This also tells crawlers that the page does not exist.

Now I have set up a new system. When a user types a wrong url, the user is sent back to the frontpage and a message is displayed on the frontpage. I redirect to the frontpage like this:

header('Location:' . __TINY_URL . '/');

Now the problem is PHP just sends back a 200 code, page found.

How can I mix these two to create a 404 code on the frontpage.

And is this overall a nice way of presenting and error page.

+1  A: 

Redirecting after an error is not a very good idea. It's especially annoying for people who like to type in/edit URLs, because if you make a typo, you'll get redirected to some arbitrary page and have to start over.

I suggest you don't do this at all. If you want to, you can have your error page look like your front page though, albeit I think that'd be somewhat confusing.

Matti Virkkunen
Yeah, after giving it some thought it would be better to not just redirect. I am just going to leave things as they are not. Thank you.
Saif Bechan
A: 

You can add this into your htaccess

ErrorDocument 404 http://www.yourdomain.com/404.php

or

ErrorDocument 404 http://www.yourdomain.com/index.php #Your homepage

This will send the intials 404 header

Lizard
+1  A: 

It's giving you a 200 code because you are redirecting to a page that returns a 200 code. The way ive done this before is to send the 404 header then load the 404 view.

header("HTTP/1.0 404 Not Found");
include("four_o_four.php");
Galen