Saif Bechan
Saif Bechan

Reputation: 17121

Redirecting to frontpage after 404 error in PHP

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.

Upvotes: 0

Views: 1312

Answers (3)

Galen
Galen

Reputation: 30170

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");

Upvotes: 2

Lizard
Lizard

Reputation: 45002

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

Upvotes: 0

Matti Virkkunen
Matti Virkkunen

Reputation: 65126

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.

Upvotes: 1

Related Questions