PHP 404 Header setzen und auf vorherige Seite verweisen

Fabian17

Fabian23
ID: 304783
L
18 Mai 2007
1.674
105
Das vorherige JavaScript / HTML Problem wurde behoben ;) Danke für die Tipps.

Nun habe ich allerdings ein neues Problem:

Ich habe eine neue Frage,

Background Info:
In meinem Forum erstelle ich die einzelnen Topics in Seiten geordnet, bspw. 10 Postings je Seite, dementsprechend wird eine Seitenanzahl angegeben.

/thread/12-tollerthread.html
/thread/12-tollerthread/1.html
/thread/12-tollerthread/3.html

[1] [2] [3] und so weiter.

Nach der dritten Seite ist also Schluss!

allerdings Crawlt Google über Seite drei und noch viel mehr... (warum auch immer!), nun wird mir ständig der Fehler angezeigt das die Seiten zwar existieren (mein Script zeigt einfach ne leere Seite an), aber doppelten Content bringen was ja auch logisch ist,

naja ich dachte einfach, ich baue eine ganz simple einseitige Auswahlabfrage ein und leite wenn die aktuelle Seite > als die maximale Seitenzahl ist.

Dann soll als Anweisung der 404 Error gesendet werden und gleichzeitig möchte ich das der User auf die jeweils letzte mögliche Seite geleitet wird.

Ich experimentiere bereits so:

PHP:
$page = getPage.......
$pages = maximale Seitenanzahl

if($page > $pages) {
		header("Location: /thread/ID-NAME/MAXSEITE.html");
		header("HTTP/1.1 404 Not Found");
	}

So wird der User zwar weitergeleitet, aber der Header ist nach wie vor 302 Found!, tausche ich die Reihenfolge, so ist der Header 404 aber man wird nicht weitergeleitet :/

Könnt Ihr mir helfen wie ich einen korrekten 404 (oder welchen Header würdet Ihr empfehlen?), denn die Seite die Google crawlen will, gibt es nunmal nicht.

Danke im Voraus.

Gruß,
Fabian
 
Geht nicht!

Ich empfehle die RFC 2616 als Lektüre ;)
Du kannst entweder Umleiten (30x + Location) oder NotFound (404) senden.

Für einen normalen Benutzer kannst du 404 verwenden, ihm aber trotzdem einen Text zeigen, damit er weiß, was er tun soll "Nicht gefunden, aber klick hier, um...". Hier könntest du mit JavaScript auch eine entsprechende Umleitung machen. Bringt aber a) dem Googlebot nix, weil er das nicht beachtet und b) dem Benutzer auch nix, wenn du gleich weiterleitest, dann kannst du gleich 30x senden.

Wenn du Seiten hast, die es nicht mehr gibt und die auch nicht wieder kommen, kannst du mit 410 einem Suchcrawler Bescheid geben.

P.S. Location-Header vor der eigenen Response-Statuszeile is natürlich ungültig. Das kann kein HTTP-Client verstehen.