Kein 08/15 301

geschrieben von martin am 22. Juni 2009

Weiterleitungen (Redirects), der korrekte Umgang mit HTTP-Status-Codes und Direktiven in der .htaccess gehören zum Handwerkszeug eines jeden Webmasters. Wichtig ist es, die Begriffe „Rewrite“ und „Redirect“ sowie bei Letzterem zwischen „permanent“ und „temporarily“ zu unterscheiden.

Was? auch bezeichnet als Effekt
Rewrite „Suchmaschinenfreundliche URLs“, „Umschreiben“ oder häufig „Nutzung mod_rewrite“ allgemein liefert Seiten unter einem anderen Namen aus
Permanently Redirected „301er“, „permanently moved“ teilt dem Browser / der Suchmaschine mit, dass die Seite dauerhaft umgezogen ist
Temporarily Redirected „302er“, „temporarily moved“ teilt mit, dass die Seite kurzzeitig woanders zu erreichen ist
Page-Refresh „Meta-Refresh“, „Meta-Redirect“, „Meta-Weiterleitung“ weist den Browser an, das Laden einer Seite durchzuführen
JavaScript-Weiterleitung „Location-Href-Anweisung“, „JavaScript-Redirect“ weist den Browser an, die Adresse zu wechseln

Das URL-Rewriting auf dem Server hat zum Ziel, auf Browser-Anfragen anders zu reagieren, als Dateien und Scripts physisch auf dem Server liegen. Soll

http://www.example.com/meine-seite

intern auf eine Anfrage wie

http://www.example.com/script.php?id=25

umgeschrieben werden, ist für den Apache Webserver dieser Eintrag (diese „Direktive“) in der .htaccess denkbar:


RewriteEngine On
RewriteRule ^meine-seite$ script.php?id=25 [L]

Die RewriteRule wird durch das Modul „mod_rewrite“ im Apache interpretiert und führt zu keiner Rückmeldung der internen Auflösung an den Browser. Der originale URL bleibt in der Adresszeile des Browsers stehen.

originaler URL Rewrite

Ganz anders ist der Vorgang einer Umleitung, also eines Redirects zu sehen. Dieser kann genauso in der .htaccess erfolgen:


RewriteEngine On
RewriteRule ^meine-seite$ /die-andere-seite.html [L,R=301]

Hierbei wird jedoch an der Browser lediglich der HTTP-Status-Code „301“ und die Adresse der neuen Seite gesendet. Der Browser nimmt diesen Hinweis zur Kenntnis und ruft die neue Adresse auf.
Ein Status-Code „301“ besagt dabei, dass die aufgerufene Seite permanent, also für immer auf die neue Adresse umgezogen ist. Ein Code „302“ teilt mit, dass die Seite nur kurzzeitig („temporarily“) auf einer anderen Adresse zu finden ist. Beim Redirect auf den neuen URL ändert sich auch die im Browser angezeigte Adresse.

Weiterleitung Redirect 301 und 302

Suchmaschinen interpretieren den HTTP-Status-Code ebenfalls. Ob eine Seite temporär oder permanent auf einem neuen URL zu finden ist, stellt eine wichtige Information für Crawler und Index dar.

Während Rewrites (also das Umschreiben) nur durch die Server-Software selbst möglich sind, können Redirects (Weiterleitungen) auch mit Hilfe von Server-Scripts geschehen. Ein Beispiel in PHP für eine permanente Weiterleitung (den „301er Redirect”):


<?PHP
header("HTTP/1.1 301 Moved Permanently");
header("Location: /die-andere-seite.html");
?>

Wird die Anweisung des “301ers” weg gelassen, gilt dies als „moved temporarily“ („302er Redirect“):


<?PHP
header("Location: /die-andere-seite.html");
?>

Neben der Weiterleitung mit Hilfe von HTTP-Status-Codes ist es auch möglich, dem Browser über ein Meta-Tag oder eine JavaScript-Anweisung mitzuteilen, dass auf eine andere Seite zugegriffen werden soll. Der Meta-Refresh


<meta http-equiv="refresh"
content="5; URL=http://www.example.com/die-andere-seite.html">

leitet den Besucher nach dem Ablauf von 5 Sekunden auf die neue Adresse weiter. Ist im Browser JavaScript aktiviert, funktioniert auch die Anweisung:


<script type="text/javascript">
location.href = 'http://www.example.com/die-andere-seite.html';
</script>

Meta-Weiterleitungen und die genannte JavaScript-Anweisung werden jedoch u. U. nicht durch jeden Browser und jede Suchmaschine korrekt interpretiert.

Rewrites und Redirects unterscheiden sich folglich in der Antwort des Servers an den Browser. Während ein Rewrite den URL nur intern umschreibt, gibt ein Redirect die neue Adresse an, unter der die Seite nun kurzzeitig oder permanent zu finden ist. Die klare Angabe von Status-Codes in .htaccess Direktiven oder über serverseitige Scripts ist die Best Practice für Redirects. Weiterleitungen mit Hilfe von Meta-Tags oder per JavaScript sind nur in wenigen Ausnahmefällen sinnvoll.

  • MisterWong
  • Y!GG
  • Webnews
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit


Eine Antwort zu “Kein 08/15 301”

  1. heiko sagt:

    Spannend schon, aber irgendwie fehlt hier noch die eigentliche Info :-)

    Grüssle Heiko