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:
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)
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).