Aus aktuellem Anlass möchte ich mal auf die unterschiedlichen HTTP Status Codes eingehen, die man auf seinen Webseiten verwenden kann. Neben den beschriebenen HTTP Response-Codes gibt es noch eine Reihe anderer Codes, auf die ich nicht weiter eingehen möchte.
HTTP Code 200 OK
Dieser Code ist der Default HTTP Code. Der HTTP Code 200 wird automatisch vom Webserver vergeben, wenn eine Webseite normal ausgeliefert wird. Bei Statischen HTML Seiten, Bilder und anderen Dateien wird dieser Code vom Webserver vergeben.
Im PHP Skript wird dieser Code auch vorgegeben, kann aber per header(‘…’) Anweisung überschrieben werden. Mit dem HTTP Code 200 kann jeder normale Browser, Jede Suchmaschine oder andere HTTP Clients gut umgehen.
Der Code bedeutet: Alles OK, hier hast Du Dein Ergebnis!
HTTP Code 301 Moved Permanently
Auf dem Server ist eine Seite umgezogen. Es handelt sich um einen permanenten Umzug und es ist nicht vorgesehen, den Umzug in absehbarer Zeit rückgängig zu machen. In dem Fall verwendet man den HTTP Code 301. Möchte man den HTTP Code für einen URL verwenden, muss man dass den Webserver mitteilen. Es ist nicht ausreichend, die Datei von A nach B zu kopieren und unter dem URL A wird nun automatisch ein 301 Code ausgeliefert. Am einfachsten ist es, die Weiterleitung per .htaccess in die Konfiguration des Webservers einzutragen, oder in einem kleinen PHP Skript (2-3 Zeilen) zu schreiben.
Beispiel für einen HTTP Code 301 per PHP
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://meinedomain.de/neueseite.html”);
?>
Beispiel für einen HTTP Code 301 per .htaccess
Redirect /alteseite.html neueseite.shtml
Ein Browser/Robot würde den HTTP Code 301 erkennen und dann die neue Seite aufrufen. So erklärt sich z.B. der Effekt, wenn man im Browser http://www.meinedomain.de/alteseite.html eingibt und der Browser dann http://meinedomain.de/neueseite.html aufruft. Hier bei muss es sich zwar nicht um ein 301 handeln, aber in vielen Fällen ist es ein 301 der dieses Verhalten verursacht.
Wenn der Googlebot einen URL mit einer 301 Weiterleitung aufruft, folgt er der Weiterleitung und es wird auch der neue URL in den Suchergebnissen angezeigt und der Google Cache zeigt auch auf die neue Seite.
HTTP Code 302 Not Found
Der Fehlercode 302 unterscheidet sich im wesentlichen nur durch eine Kleinigkeit vom Fehlercode 301. Im Falle einer Weiterleitung mit einem HTTP Code 302 besagt dies, dass die Seite nun eine neue Adresse hat, diese sich aber bald wieder in den Ursprungszustand zurück verändern wird. Das kann z.B. notwendig sein, wenn umfangreiche Wartungsarbeiten an einem Server durchgeführt werden müssen. In dem Fall werden alle Seiten per 302 auf eine “Sorry, aber wir sind bald wieder für Sie da” Seite weitergeleitet und sobald die Arbeiten abgeschlossen sind, ist alles wieder wie vorher. Für den Besucher einer Webseite macht es keinen Unterschied, ob man per 301 oder per 302 umgeleitet wird, aber für Google ist der Unterschied schon wichtig. Wenn eine Seite per 302 auf ein neues Ziel umgeleitet wird, erkennt Google das und folgt der Weiterleitung. Aber im Index erscheint weiterhin die alte Adresse und auch der Google-Cache wird nicht zu der neuen Adresse angezeigt. Statt dessen wird weiterhin die Weiterleitungsadresse unter dem Suchergebnis angezeigt.
Dies ist eine Tolle Möglichkeit, die Suchergebisse bei Google anzupassen, doch genau diese Möglichkeit hat in der Vergangenheit zu dem sog. “302-Hijacking” geführt. Google hat das Problem nach eigenen Angaben zufolge aber unter Kontrolle.
Ein weiteres Problem mit der 302 Weiterleitung ist die PR Vererbung. Ich selbst konnte es noch nicht beobachten, aber es soll wohl im Falle einer 302 Weiterleitung, Probleme mit der PR Vererbung geben.
Fazit:
Die Weiterleitung per 301 ist auf jeden Fall einer Weiterleitung per HTTP Code 302 zu bevorzugen. Die Ausnahme von der Regel ist eine kurzfristige Weiterleitung, die man dann besser mit einem 302 Code beantwortet.
Ergänzung:
Mein aktueller Anlass ist im übrigen eine Weiterleitung per 302 die schon seit über einem Jahr exisitert (ups). Mir selbst ist der Fehler nie aufgefallen, nur durch einen Zufall bin ich von jemandem darauf Aufmerksam gemacht worden und habe das natürlich sofort geändert. Allerdings konnte ich die oben beschriebenen Effekte bezüglich des URLs in den Google Results und der Effekt mit dem Google Cache gut nachvollziehen. Nur leider war das nicht der gewünschte Effekt den ich ursprünglich mit der 301/302 Weiterleitung verfolgt habe.
Das mit der 302 Weiterleitung ist so nicht ganz korrekt.
Erstens heist es 302 Found und nicht ( not Found )
Zweitens, ist bei der 302 Weiterleitung bezüglich Google, zu unterscheiden, ob es sie um eine on-domain oder off-domain weiterleitung handelt.
Ein Beispiel:
On-domain 302 – http://bam.mali.de wird mit 302 redirekt auf http://muli.bam.mali.de/forum/index.php?cid=233443 redirected. Das bewirkt, das in den SERPs http://bam.mali.de angezeigt wird weil links auf diese seite verweisen.
Off-Domain 302 – Off-domain redirects mit 302 werden von google wie 301er behandelt um hijacking vorzubeugen, so wird google bei verdacht auf hijacking die ursprungsdomain idexieren und die weitergeleitete ignorieren. Anders sieht es aus wenn der 302 redirekt legitim ist :
bragi.com ist mit 302 redirect auf lugi.com/bragi/shop.aspx umgeleitet, somit sagt google, dass dies ein legitimer redirect ist und listet in den SERPs bragi.com/bragi/shop.aspx
Mit der pagerank-verärbung hast du recht, dieser wird bei 302 nicht verärbt.
ABER, wenn man nun ein projekt z.b. einen hosted shop hat, dann setzt man die links eben nicht auf bragi.com sondern auf bragi.com/bragi/shop.aspx und kann dieses projekt auf diesem wege genauso wie jedes andere optimieren.
Linkbait kampagnen sollten dann logischer weise nicht auf diese shop domain laufen sondern auf anderem wege nutzbar gemacht werden.