Automatische Weiterleitung mit Javascript


Javascript-Objekt  location



Javascript bietet mehrere Methoden, um die aktuelle Webseite neu zu laden. Die Methode location.replace() wird verwendet, um an Stelle der aktuellen Webseite ein Dokument von einem bestimmten angegebenen Pfad zu laden.

Sie wirkt ähnlich wie ein einfacher HTML-Hyperlink, d.h. sie ersetzt den Inhalt der aktuellen Seite.
Der History-Eintrag wird ersetzt, daher führt eine nachfolgende 'Zurück'-Anweisung nicht auf diese Webeite, sondern auf die davor besuchte Seite.

Javascript-Funktionen sind (nur) dann sinnvoll, wenn die Weiterleitung automatisch oder mit Kontrolle durch ein Programm ablaufen soll. Einige Beispiele dazu werden auf dieser Seite vorgestellt.



In diesem Fall wird die Eigenschaft href des location-Objekts durch den angegebenen Pfad überschrieben.
Damit wird ebenfalls die aktuelle Webseite ersetzt. Es wird jedoch ein neuer History-Eintrag angelegt, daher führt eine nachfolgende 'Zurück'-Anweisung wieder auf die Seite mit der Weiterleitung.



Für diese Beispiele werden die gleichen Pfade verwendet wie oben für die Javascript-Funktion.

Für einen HTML-Hyperlink kann man ein Verweis-Ziel angeben: Das Attribut target="_blank" öffnet das angegebene Dokument in einem neuen Browser-Tab oder -Fenster. Das ist für die Javascript-Funktion nicht möglich.

In so einfachen Fällen wie den hier gezeigten Beispielen verwendet man natürlich HTML-Hyperlinks und keine Javascript-Funktionen.

Automatische Weiterleitung


Das Beispiel zeigt eine typische ↓ Datei index.html, wie sie in jedem Verzeichnis (Ordner) dieses Webs enthalten ist.

• Das <body>-Element enthält ein onload-Attribut. Damit wird der angegebene Javascript-Code nach dem vollständigen Laden des <body>-Elements (=der gesamten Mini-Webseite) ausgeführt.

• Das neue Ziel wird aus dem Hyperlink gelesen, welcher in der <h1>-Überschrift enthalten ist.
Im Normalfall erfolgt die Weiterleitung so rasch, dass man sie nicht oder nur als kurzes Zucken bemerkt.

• Wenn ein/e AnwenderIn die Javascript-Funktionen des Browsers abgeschaltet hat, dann wird eine Minimal-Webseite angezeigt: Die einzige Möglichkeit ist, den Link anklicken und damit manuell das vorgegebene Ziel zu laden.

• Als Beispiel wird eine Datei mit dem Namen index.html verwendet, weil dieser Name in den meisten Webs eine besondere Bedeutung hat (Kapitel ↓ index.html)


• Das Element mit dem Attribut id="ah" wird an die Variable n zugewiesen. Das setzt voraus, dass es im Dokument dieses Hyperlink-Element gibt:
<a id="ah">...</a>

• Das Verweis-Ziel href des <a>-Elements wird gelesen und an die Variable h zugewiesen.

• Die Methode ↑ location.replace() wird angewendet: Die aktuelle Seite wird durch das Verweis-Ziel ersetzt.



Jedes gängige Web-Editor-Programm verwaltet die Hyperlinks aller Web-Dateien: Bei einer Änderung von Datei-Name oder Pfad des Verweis-Ziels werden alle dorthin führenden Hyperlinks automatisch aktualisiert, d.h. auch der in diesem Beispiel enthaltene Link.

Der Text von Javascript-Funktionen wird von keinem Web-Editor verändert. Man muss daher alle Pfade, die als Text in Javascript-Programmen angegeben sind, manuell aktualisieren. Das Beispiel vermeidet diese Fehlerquelle, weil das Javascript-Programm sein Verweis-Ziel aus dem HTML-Hyperlink liest.

Suchmaschinen folgen meist nur 'echten' HTML Hyperlinks, weil Javascript-Code von ihnen ignoriert wird. Geben sie unabhängig davon in den Links ihrer Webseiten niemals Index-Seiten als Ziele an, sondern immer Seiten mit echtem Inhalt.

Verzögerte Weiterleitung


Das Beispiel zeigt eine modifizierte Version der Datei index.html, die im vorigen ↑ Kapitel vorgestellt wurde.

• Das <body>-Element enthält ein onload-Attribut. Damit wird der angegebene Javascript-Code nach dem vollständigen Laden der Mini-Webseite ausgeführt.

• Die Methode setTimeout() erwartet 2 Argumente:
Das 1. Argument enthält den auszuführenden Javascript-Code (hier die Funktion do_forward() ), das 2. Argument die Anzahl Millisekunden bis zum Timeout-Ereignis (hier: 5 Sekunden).

• Nach Ablauf der angegebenen Zeit wird der Code ausgeführt: Die Funktion do_forward() arbeitet genauso wie im vorigen ↑ Beispiel angegeben:
Sie liest das Verweis-Ziel aus dem Hyperlink-Element mit dem Attribut id="ah" und ersetzt die aktuelle Webseite durch das angegebene Ziel.

• Diese Version ist sinnvoll, wenn man den BesucherInnen mehrere Alternativen anbieten will: Tragen sie in diesem Fall weitere Hyperlinks ein, aus denen man manuell wählen kann.
Wenn bis zum Timeout keine Reaktion erfolgt, dann wird das angegebene Standard-Ziel geladen.
In diesem Fall wird die Webseite für alle BesucherInnen angezeigt, man treibt daher meist etwas mehr Aufwand zu ihrer Gestaltung.

Index-Dateien


Datei-Pfade: Der Webserver sendet entweder das verlangte Dokument oder - wenn es nicht existiert - eine → Fehler-Webseite.

Verzeichnis-Pfade: Der Webserver hat - je nach Konfiguration - mehrere Möglichkeiten:

Wenn sich im angegebenen Verzeichnis eine Datei mit dem Namen index.html befindet, dann wird diese an den Browser gesendet.

Andernfalls hängt es von der Konfiguration ab, ob 'Directory-Browsing' erlaubt ist:
In Amateur-Webs ist das erlaubt und der Browser zeigt ein Inhaltsverzeichnis (Directory) aller enthaltenen Dateien an.

In professionellen Webs ist das aus Sicherheits-Gründen verboten und der Browser erhält eine Fehler-Meldung. Das macht keinen guten Eindruck, daher ist in jedem Verzeichnis eine Datei index.html enthalten, typisch mit Hinweisen, Hyperlinks und/oder einer automatischen Weiterleitung.



Die Webserver-Konfiguration eines Web-Providers ist nicht zugänglich und man kann nur selten Ausnahmen für das eigene Web einrichten.

Es ist daher sinnvoll, sich sowohl im eigenen Intranet als auch im Internet an die meist-verwendete Konfiguration zu halten.

Die Verwendung von dynamischen Index-Seiten (index.php) ist möglich, man sollte diese Fälle jedoch vermeiden, weil solche Seiten langsamer laden.



Die Option +Indexes erlaubt das Directory-Browsing ausnahmsweise für den angebenen Pfad. Man verwendet sie typisch für öffentlich zugängliche Download-Verzeichnisse.



Verwenden sie für alle Pfade (Ordner-Namen, Datei-Namen) ihres Webs 'sprechende' Namen, z.B. waldviertel.html, haustiere.html, ... und weder sinnlose Namen (seite_1.html) noch die Namen der Index-Dateien. Sie schaffen damit mehr Übersicht bei der Verwaltung ihres Webs und gewinnen Flexibilität, weil sie die Ziele der Weiterleitung jederzeit einfach ändern können.

Pfade mit zum Thema passenden Namen erhalten bei Suchmaschinen höhere Wertungen. Kurze Weiterleitungs-Dateien werden von ihnen einfach ignoriert.

Die Namen von Verzeichnissen und Dateien sollten keinesfalls Leerzeichen, Interpunktionen (Strichpunkte, Doppelpunkte, ...) oder Sonderzeichen (ÄÖÜäöüß) enthalten.
Wenn sie auf einem Windows-PC entwickeln, dann sollten sie nur Klein-Buchstaben verwenden. Sie vermeiden damit typische Fehler, deren Beseitigung viel Zeit kostet:
Windows kann Groß- und Kleinbuchstaben in Pfaden nicht unterscheiden. Wenn sich Pfade und Links nur in diesen Details unterscheiden, dann funktionieren die Links beim Test am eigenen Windows-PC, nicht jedoch am Linux-Server des Web-Providers, weil Linux die Zeichen streng unterscheidet.
Zur Web-Entwicklung ist ein → Virtueller PC wesentlich besser geeignet, auf dem man genau die gleiche Software installiert wie am Server-PC des Web-Providers.

Weiterleitung mit PHP


Umleitung mit PHP:
<?php
$rurl = 'http://'.$_SERVER['SERVER_NAME'];
$rurl .= dirname($_SERVER['REQUEST_URI']);
$rurl .= '/sorry.html';
header('Location:'.$rurl);
exit;
?>
In diesem Beispiel wird zu einer Seite sorry.html weitergeleitet, die sich im gleichen Verzeichnis (Ordner) befindet wie die angeforderte Seite.
Diese Methode wird typisch angewendet, wenn ein/e BesucherIn die vom Programm geforderten Bedingungen nicht erfüllt.