Zur Navigation

404 und unmittelbare 301-Weiterleitung

1 Rudy

Hallo,

für das in der Vergangenheit mal angesprochene Hotelverzeichnis möchte ich beim Aufruf einer Hotel-Unterseite, die nicht existiert, auf den Hotelverzeichnis-Index umleiten, anstatt eine für den Nutzer wenig hilfreiche "Nicht gefunden"-Seite anzuzeigen. Die Idee dahinter ist, wenn ein Hotel aus dem Verzeichnis genommen wird und noch im Suchmaschinenindex präsent ist, der Link Nutzer trotzdem noch zu Hotels führt.

Nun mache ich das so: wird eine Hotel-Url nicht gefunden:

header('HTTP/1.1 Not Found');
header('Location: /hotel/suedtirol.html');
die();

Meine Frage: auch wenn das mE der Nutzbarkeit der Site zuträglich ist - ist das vom SEO-Standpunkt bedenklich?

27.07.2008 16:46 | geändert: 27.07.2008 23:12

2 Jörg Kruse

Bei dem Code, den du gepostet hast, wird ein Status Code 302 gesendet! Das ist wohl immer dann der Fall, wenn in PHP mittels header() eine location definiert ist, aber kein Status Code 301.

Mit 302er Weiterleitungen gab es vor einigen Jahren teils massive Probleme (Stichwort URL-Hijacking) - möglicherweise haben die Suchmaschinen das inzwischen weitgehen im Griff - aber ich würde da trotzdem auf Nummer sicher gehen und solche Weiterleitungen vermeiden.

27.07.2008 17:28

3 Rudy

D.h. ich muss eine Fehlerseite anzeigen? Was ist mit einem permanent-Redirect (301)? Kann ich den mit 404 kombinieren, oder auch einfach nur diesen verwenden?

Es geht mir nur darum, eine nicht existente Hotelurl auf den Index umzuleiten, und dass mit der Zeit der Eintrag jener Seite aus dem Google-Index verschwindet.

27.07.2008 17:45

4 Jörg Kruse

Ich denke nicht, dass man diese Status Codes miteinander kombinieren kann. Ich habe zwar schon so etwas gesehen:

HTTP/1.1 302 Found
Status: 404

Aber da ist fraglich, ob die zweite Zeile überhaupt berücksichtigt wird.

Aber dir geht es ja mehr um die Angabe Location, die von den Browsern befolgt werden soll. Mit PHP header() ist das nicht hinzubekommen, da die 404 dann durch eine 302 überschrieben wird. Möglichweise auch, weil die Browser den Location-Header gar nicht erst auswerten, wenn eine 404 gesendet wird?

Bei Weiterleitungen auf externe ErrorDocuments Art wird übrigens auch nur eine 302 gesendet:

ErrorDocument 404 http://example.org/error-404.html

Aber du könntest ja alternativ auch ein HTML-Dokument mit JavaScript-Weiterleitung anhängen?

27.07.2008 18:24 | geändert: 27.07.2008 18:26

5 Rudy

Oder einem Meta-Refresh mit kurzem Delay? Würds das auch tun?

Also 1.1 404, Anzeige der "Nicht gefunden, Sie werden weitergeleitet..."-Seite. Zwar nicht mein Favorit, aber wenns nicht anders geht...

Edit: wobei... : http://www.sonnenstudio-joli.de/Web-Glossar/meta-tag-refresh.aspx, aber 2 Sekunden würden wohl reichen?

27.07.2008 18:50 | geändert: 27.07.2008 18:56

6 Jörg Kruse

Meta Refresh wurde von Suchmaschinen auch schon mit einer 302er Weiterleitung gleichgesetzt.

Edit: wobei... : http://www.sonnenstudio-joli.de/Web-Glossar/meta-tag-refresh.aspx, aber 2 Sekunden würden wohl reichen?

Wo die Grenze liegt, weiß ich nicht - ich setze Meta Refresh nur bei Formularseiten ein, da stört's die Suchmaschinen nicht. Allerdings wird die Suchmaschine bei einer 404er Seite plus Meta Refresh wohl auch keine Brückenseite vermuten - die Seit soll ja nicht indiziert werden.

Edit:
Ich würd's dann aber lassen wegen einer möglichen Gleichsetzung mit einer 302er Weiterleitung

27.07.2008 19:06 | geändert: 27.07.2008 19:08

7 Rudy

Ok - dann besser kein Risiko eingehen und mit JS weiterleiten. Muss ich da auch einen Timeout setzen oder kann ich das ohne Verzögerung machen?

BTW: gerade eben ist die "Achtung: neue Beiträge"-Funktion angesprungen. Sehr nett gemacht!

27.07.2008 19:12

8 Jörg Kruse

Naja, man weiß ja nicht, wie Suchmaschinen JavaScript-Weiterleitungen in Zukunft interpretieren - ein Timeout ist da vielleicht zukunftssicherer ;)

BTW: gerade eben ist die "Achtung: neue Beiträge"-Funktion angesprungen. Sehr nett gemacht!

Ja, ich hatte die auch gerade bei deinem Edit :)

27.07.2008 19:25

9 Rudy

Ok, ich hab nun ein Include gebaut, das ich anstatt der header('location..-Zeile aus p1 einbinde, wobei ich vorher in $redirecturl die Adresse reinschreiben, wohin es umleiten soll. Funktioniert ganz gut, hoffentlich finden das die Sumas auch so.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>404 - Seite nicht gefunden</title>
</head>
<body>
<h1>Meine tolle Website</h1>
<h2>404 - Seite nicht gefunden</h2>
<p>Die angeforderte Seite wurde leider nicht gefunden. Möglicherweise wurde sie gelöscht oder sie hat nie existiert.</p>
<p>Sie werden nun an die treffendste Seite <a href="http://www.domain.com<?=$redirecturl?>">http://www.domain.com<?=$redirecturl?></a> weitergeleitet.</p>
<script type="text/javascript">window.setTimeout('location.href=\'<?=$redirecturl?>\';', 3000);</script>
</body>
</html>

27.07.2008 23:18 | geändert: 27.07.2008 23:19

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]