Weiterleitung

Weiterleitung einer HTTP-Anfrage mittels eines HTTP-Statuscode 3xx

Eine Weiterleitung (englisch forward) oder Umleitung (englisch redirect) im World Wide Web wird dazu verwendet, den Aufruf einer URL (z. B. Besuch einer Webseite) zu einer anderen URL zu führen. Eine Weiterleitung kann z. B. nach einem Umzug oder Umbau einer Website nützlich sein, um Besucher einer veralteten URL nicht ins Leere laufen zu lassen.

Arten der Weiterleitung

Bearbeiten

Für die technische Umsetzung von Weiterleitungen gibt es verschiedene Möglichkeiten:

Weiterleitung per HTTP-Statuscode

Bearbeiten

HTTP bietet die Möglichkeit, über das Header-Feld Location auf eine andere URL zu verweisen. Damit wird der Webbrowser angewiesen, die angegebene URL zu laden. Dies wird begleitet durch einen 30x-Statuscode. Es gibt verschiedene Statuscodes für Weiterleitungen unterschiedlicher Intention und technischer Spezifikation.

Statuscodes für Weiterleitungen sind spezifiziert in RFC 7231[1] sowie RFC 2616[2] (HTTP/1.1). Verschiedene HTTP-Statuscodes für Weiterleitungen werden von Browsern und Suchmaschinen entsprechend unterschiedlich interpretiert. Bezüglich der Intention kann unterschieden werden zwischen temporären und permanenten Weiterleitungen. Die technische Spezifikation unterscheidet bei Aspekten wie Caching und Request-Methode für die Ziel-URL der Weiterleitung.

Die folgende Tabelle zeigt alle Statuscodes zur Weiterleitung und ihre technischen Spezifikationen:[3]

HTTP-Statuscode HTTP-Version Temporary / Permanent Cachebar Request-Methode zweiter Request
301 HTTP/1.0 Permanent ja GET / POST kann sich ändern
302 HTTP/1.0 Temporary nicht per Default GET / POST kann sich ändern
303 HTTP/1.1 Temporary niemals Immer GET
307 HTTP/1.1 Temporary nicht per Default wie erster Request
308 HTTP/1.1 Permanent ja wie erster Request

Das folgende Beispiel zeigt den HTTP-Header mit 301 Statuscode:

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/
...

Umsetzung via PHP

Bearbeiten

Im folgenden Beispiel wird der HTTP-Header für eine Weiterleitung mit Statuscode 301 durch ein PHP-Programm gezeigt:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("location: http://example.org/");
exit;
?>

Ohne spezifizierte Angabe eines Statuscodes, wird in PHP der 302 Statuscode verwendet. Beispiel:

<?php
header("location: http://example.org/");
exit;
?>

Umsetzung via Rewrite-Regel

Bearbeiten

Für Nutzer eines Apache-Webservers, die keinen Zugriff auf die Serverkonfiguration haben, bei denen dennoch .htaccess aktiviert ist, ist es möglich, die Weiterleitung der Domain via .htaccess vorzunehmen. Eine .htaccess-Datei wird bei dieser Art von Weiterleitung mit Punkt und Endung in das Root-Verzeichnis des jeweiligen Webspace eingefügt. Um permanent (vgl. 301-Redirect) jede Anfrage an z. B. example.net auf die Subdomain www.example.net zu leiten, müsste die .htaccess-Datei folgendermaßen aussehen:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.example\.net$ [NC]
RewriteRule ^(.*)$ http://www.example.net/$1 [R=301,L]

Wer umgekehrt von der Subdomain www. auf die Hauptdomain weiterleiten möchte, der müsste den Code folgendermaßen anpassen:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.example.net$ [NC]
RewriteRule ^(.*) http://example.net/$1 [R=301,L]

Weiterleitung per HTML-Meta-Tag

Bearbeiten

HTML erlaubt eine Weiterleitung per Meta-Tag, Meta Refresh genannt. Dabei wird der Webbrowser angewiesen, die Seite nach vorgegebener Zeit zu aktualisieren oder eine andere URL zu laden.

Mit folgendem Befehl in dem Kopfbereich der HTML-Datei setzt man eine Weiterleitung per Meta Refresh:

<meta http-equiv="refresh" content="5; URL=http://www.example.org">

Hier bei wird man nach 5 Sekunden auf die URL http://www.example.org/ weitergeleitet.[4]

Diese Art der Weiterleitung wird vom W3C-Konsortium allerdings nicht empfohlen, und zwar aus folgenden Gründen: Erstens wird die Seite, auf der sich die Meta-Angabe zur Weiterleitung befindet, komplett geladen, sodass sie komplett einsehbar ist. Zweitens wird der Benutzer, wenn er nach erfolgreicher Weiterleitung auf den Zurück-Button klickt, sofort wieder weitergeleitet.[5]

Weiterleitung in Form von Frames

Bearbeiten

In HTML kann man sogenannte Frames verwenden, um den Inhalt anderer Webseite eingebettet anzuzeigen. Hierbei handelt es sich um eine Art Rahmen, in dem mehrere Webseiten (HTML-Dokumente) dargestellt werden können. In der Adresszeile des Browsers bleibt die ursprüngliche URL weiterhin sichtbar.

Dabei gibt es auch die Möglichkeit Inhalte von fremden Webseiten einzubinden, ohne sie von ihrer Ursprungsseite entfernen zu müssen, indem man einfach die Seite als Frame einbindet (z. B. einen Wikipedia-Artikel). Allerdings gibt es zurzeit noch keine einheitliche Regelung, ob das Einbinden fremder Webseiten verboten ist oder nicht.

Weiterleitung per JavaScript

Bearbeiten

Per JavaScript ist es möglich, den Webbrowser anzuweisen, zu einer bestimmten URL zu navigieren.

Beispiel:

<script type="text/javascript">
  window.location.href = "http://www.example.org/";
</script>

Weiterleitungen in Wikis

Bearbeiten

Bei MediaWiki können Weiterleitungen angelegt werden. In diesem Fall enthält der Artikel keinen Inhalt, sondern nur die Anweisung der Weiterleitung auf eine andere Artikelseite. Im Unterschied zu den vorangegangenen Beispielen erfolgt dabei die Weiterleitung intern über die Wiki-Engine und nicht über den Browser.

Mit folgendem Befehl setzt man eine interne Weiterleitung in einem Mediawiki-Artikel:

#WEITERLEITUNG [[Hauptseite]]

Statt #WEITERLEITUNG funktionieren auch #Weiterleitung, #weiterleitung, #REDIRECT, #Redirect und #redirect.[6]

Hierbei wird man beim Aufruf der Seite auf die Hauptseite des betroffenen Wikis weitergeleitet.[6]

Siehe auch

Bearbeiten

Einzelnachweise

Bearbeiten
  1. RFC 7231 – Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. Juni 2014 (englisch).
  2. RFC 2616 – Hypertext Transfer Protocol – HTTP/1.1. Juni 1999 (englisch).
  3. SEO & Redirects – The Total Guide. Audisto, abgerufen am 29. Oktober 2015 (englisch).
  4. Automatische Weiterleitung zu anderer Adresse (Forwarding). In: SELFHTML-Wiki.
  5. Use standard redirects W3C Quality Assurance Tips
  6. a b Hilfe:Weiterleitung in der deutschsprachigen Wikipedia