Coding-Schatzkästlein
Kleine Tips & Scripts zum Webdesign
Start > Server > Seitenweiterleitung

Server: Automatische Seitenweiterleitung (verfolgbare Adressänderung)

Zusammenfassung

Name:  Seitenweiterleitung (Server)
Aufgabe:  Maximal kompatible & komfortable Weiterleitung des Surfers zum neuen URL einer umgezogenen Webseite mittels Server-Technik.
Benötigt:  Serverseitige Scriptsprache (z.B. PHP), bzw. Apache-Server mit Rewrite-Modul.
Beispiel:  -
Download:  umlenker.zip

Eine der wichtigsten Aufgaben des Web-Designs ist die nachhaltige Anlage der Website-Struktur. D.h., der Web-Designer muß sich bei der Planung genau überlegen, wie er die Site so strukturiert, daß sowohl der Surfer, als auch der Site-Betreiber, als auch natürlich er selbst sich gut zurechtfindet. Diese Struktur sollte nicht nur möglichst selbsterklärend, sie sollte auch für zukünftige Erweiterungen geeignet sein.

Trotzdem kann es natürlich immer mal wieder vorkommen, daß eine Seite "umzieht", also unter einem neuen URL erreichbar ist. Dann sollte eine Weiterleitung existieren, damit Surfer und Suchmaschinen die Seite mit neuem URL problemlos finden.

Je nach Fähigkeit des Browsers und Angebot des Providers kann man dies auf verschiedene Arten erreichen:

  1. Der HTML-Autor hat keinen Zugriff auf den Server (z.B. bei einem Freespace-Provider/Provider mit einem preiswerten Hosting-Paket), so daß eine clientseitige Technik verwendet werden muß:
    • Manuelle Weiterleitung mit einem Link (HTML)
    • Automatische Weiterleitung mit
      • META-Refresh (HTML)
      • location.href (JavaScript 1.0)
      • location.replace() (JavaScript 1.1)
  2. Der HTML-Autor hat (bedingten oder vollen) Zugriff auf die Fähigkeiten eines Servers und kann bereits serverseitig automatisch weiterleiten mit
    • einem Serverscript (PHP, Perl, ...)
    • dem Apache URL rewriting module (Apache-Webserver)

Hier wird erläutert, wie der Web-Designer die zu bevorzugenden serverseitigen Techniken einsetzen kann (sind diese nicht einsetzbar: Automatische Seitenweiterleitung (clientseitig)). Wurde die ursprüngliche Seite bereits in einer Server-Scriptsprache wie z.B. PHP oder Perl geschrieben, so ist die Umlenkung besonders einfach. Hierzu muß einfach eine neue Seitenanforderung an den Browser geschickt werden (ohne vorher eventuell HTML-Code auszugeben):

Location: http://www.example.com/neu.htm

Für Suchmaschinen kann man dann noch einen Statuscode 301 schicken ("permanenter Redirect"), damit die alte Seite aus dem Index genommen wird.

PHP-Code

Analog kann man natürlich auch in anderen Scriptsprachen die Umlenkung bewerkstelligen: einfach mit echo, print oder einem entsprechenden Befehl die neue Location ausgeben ...

Tip: Wenn man vor der Ausgabe des Weiterleitungsheaders HTML-Code ausgeben muß (aus welchen Gründen auch immer), dann muß man die Bildschirm-Ausgabe abfangen (in PHP geht das mit ob_start()). Denn der Header muß, nomen est omen, natürlich vor den Daten ausgegeben werden.

Dient als Webserver der Apache, so kann man auch direkt durch eine interne Umlenkung die neue Seite nachladen. Ab Version 1.2 der Software gehört das URL Rewriting Module (mod_rewrite) zum Lieferumfang, das jedoch nicht automatisch eingerichtet wird. Viele Provider stellen es aber ihren Kunden zur Verfügung.

Hierzu muß der Webmaster entsprechende Umlenkungsregeln in die globale Konfigurationsdatei des Servers (httpd.conf) oder aber in verzeichnisspezifische Konfigurationsdateien (.htaccess) eintragen. Da man i.d.R. nur auf einem eigenen Server Zugriff auf httpd.conf besitzt, bleibt vielen Sitebetreibern allerdings nur die letzte Möglichkeit.

Dabei wird in jedem betroffenen Verzeichnis eine Datei .htaccess angelegt (man beachte den führenden Punkt) mit folgendem Inhalt:

RewriteEngine on
Hiermit wird das Rewrite-Modul aktiviert.

RewriteBase /
Hier wird das Verzeichnis der alten Datei auf dem Webserver angeben (hier: Hauptverzeichnis des Webservers).

RewriteRule ^alt\.htm$ neu.htm [R=301]
Die eigentliche Umlenkungsregel. Wird die Datei alt.htm angefordert (der Punkt muß mit einem Backslash maskiert werden), so wird stattdessen die Datei neu.htm ausgeliefert. Das abschließende [R=301] sorgt dafür, daß dies mit einem Redirect erfolgt (auch hier mit dem Statuscode 301 = "permanenter Redirect"). Gibt ein Surfer nun also den URL http://www.meinserver.de/alt.htm ein, so wird stattdessen http://www.meinserver.de/neu.htm geladen.

Wird die Klammer weggelassen, so erscheint in der Adresszeile des Browsers nicht neu.htm, obwohl dessen Inhalt angezeigt wird - es bleibt beim original angeforderten URL mit alt.htm (der Surfer kann also gar nicht merken, daß in Wirklichkeit neu.htm geladen wurde).

.htaccess

ZIP-Archiv mit allen Dateien.

Siehe hierzu auch: Automatische Seitenweiterleitung (clientseitig)

Kurz-URL dieses Artikels: http://Coding.binon.net/SUmlenker