(index) (upper index) (framed index) (bounce out)
[FASCINATION] / [LINKFOS] / [WEBDESIGN] /

Redirects and Reloading von Webseiten


Reloading und Redirecting meinen beide, daß der Benutzer letztlich bei einer anderen Webseite/Webadresse landet als er angegeben oder eingetippt hat. Ähnlich wie beim Telefon wird der Benutzer (teilweise ohne daß er es merkt) weitergeleitet. Das kann zum Teil ganz nützlich sein, ist oft ein interessanter Multimedia-Gag und ist manchmal ein notwendiger Trick und Kunstgriff. Wie funktionierts nun aber was sind typische Anwendungsfälle?


 
Reloading (Refresh)

Dabei wird erst eine Webseite geladen. Diese enthält einen speziellen Tag der den Webbrowser veranlasst nach einer bestimmten Zeit eine bestimmte Seite zu laden. Dies kann zum Beispiel benutzt werden um eine Seite automatisch alle paar Minuten zu aktualisieren oder es kann benutzt werden um von einer Begrüßungsseite automatisch auf ein Inhaltsverzeichnis weiter zu leiten. Sehr oft findet das Reloading auch Verwendung wenn ein Website umgezogen ist. Dann liest man etwas wie "Und Site ist umgezogen. Falls die neue Seite nicht innerhalb von ein paar Sekunden von selbst geladen wird dann klicken Sie ...". Dabei zeigt sich auch schon das Problem am Reloading: Es funktioniert nicht unbedingt mit jedem Browser, da der Befehl in der HTML Seite vom Webbrowser erkannt und ausgeführt werden muß. Ältere Browser erkennen den Befehl dabei oft nicht, während manche neueren sich (je nach Konfiguration) ev. weigern ihn auszuführen (ganz nach dem Motto: Die Webseite hat mir hier garnichts zu befehlen.)

Der Befehl selbst sieht z.B. so aus:

  <meta http-equiv="refresh" content="10; URL=http://www.fascination.de/">
Wichtig dabei: Der ganze Befehl muß bereits im HTML-Header (also zwischen den <head> und </head> Tags stehen), wie z.B.:
<head>
 <meta http-equiv="refresh" content="10; URL=http://www.fascination.de/">
</head>
Es können natürlich noch andere Angaben zwischen den head-Tags stehen. Mehrere Reload-Anweisungen (refreh-Befehle) sind aber in aller Regel wirkungslos und es wird immer nur einer ausgeführt pro Seite. Auf der Seite die dann neu geladen wird kann dann aber ohne Probleme wieder eine Reload-Anweisung stehen.

Da obige Beispiel bedeutet jetzt: Nach 10 Sekunden laden die Seite von der Adresse "http://www.fascinaiton.de/". Der Rest des Konstrukts läßt sich etwa so erklären: Durch Meta-Tags lassen sich eine Reihe von Variablen definieren. "http-equiv" gibt dabei den Namen der Variablen an, also in diesem Fall "refresh". Der Browser weiß also daß wir etwas in die Variable "refresh" schreiben wollen. "content" gibt nun an, was wir in die "refresh" Variable schreiben wollen. "10; URL=http://www.fascination.de/" ist dabei einfach der Wert und da es zwei verschiedene Sachen sind trennen wir die durch einen Strichpunkt. Der zweite Teil ist auch wieder komplexer, weil hier einer inneren Variablen (URL) der Wert "http://www.fascination.de/" zugewiesen wird. Kompliziert kompliziert. Aber am besten einfach das obige Beispiel kopieren und die Reloadzeit bzw. die URL anpassen.

Was sieht dabei nun der Benutzer? Nun erstmal lädt ganz normal die erste Seite und es erscheint die URL dieser Seite. Dann nach ein paar Sekunden wird der Webbrowser plötzlich wieder aktiv, ganz so als ob man irgendeinen Link angeklickt hätte und es wird eine neue Webseite geladen dessen Adresse nun ebenfalls wieder angezeigt wird. Falls nun auf dieser zweiten Seite nicht auch noch ein Refresh-Befehl steht, ist der Spuk damit vorbei.

Übrigens: Wenn man als Zeit 0 Sekunden angibt, dann wird die neue Webseite sofort geladen wenn die alte Webseite fertig geladen ist. Das bedeutet, daß die neue Webseite geladen werden kann, obwohl noch nichtmal alle Bilder der ersten geladen waren (auf das Fertigladen der Bilder wird nämlich nicht gewartet.) Die neue Webseite wird übrigens auch geladen, wenn der Benutzer inzwischen bereits irgendwelche Aktionen in die Wege geleitet hat und sich vielleicht sogar schon auf einer ganz anderen Seite ist. Wenn man den Benutzer ärgern will kann man deshalb Zeiten von 60 Sekunden und mehr angeben und sich freuen daß viele Benutzer völlig verwirrt und frustriert die wie von Zauberhand erscheinende neue Webseite bewundern werden (und aufgrund dieser Frustration nie wieder auf dem Website vorbeischauen :-) ).

Redirecting

Eine andere Methode den Benutzer weiterzuleiten ist das Redirecting. Das allerdings hat nicht jeder Webpage-Autor so einfach in der Hand. Dabei sind keine HTML-Befehle oder HTML-Header am Werk sondern HTTP Header. HTTP ist das Protokoll mit dem die Webseiten (und auch andere Files im WWW) übertragen werden. Dabei gibt es erstmal Header die Angeben um was für ein File es sich handelt, wie alt das ist und ob die Anfrage überhaupt bearbeitet werden konnte etc. etc. (siehe auch HTTP Codes). Es gibt dabei auch die Möglichkeit dem Browser mit zuteilen, daß eine Adresse zeitweilig oder dauerhaft verlegt worden ist. Entscheidender aber noch ist die Möglichkeit eine neue Adresse anzugeben. Es genügt dazu lediglich folgenden HTTP Header zu schicken (normalerweise werden immer etwa ein dutzend HTTP Header geschickt.):

Location: http://www.fascination.de/
Das bedeutet, daß jetzt sofort diese Adresse angesprochen und geladen werden soll. Natürlich ist es nicht unbedingt so einfach diesen HTTP Header zu schicken. Durch eine Webseite selbst läßt sich das nicht machen. Möglich ist es zum Beispiel durch ein CGI Script. Dieses schickt nach seinem Aufruf einfach diesen Header und dann zwei Returns ("\n"-Zeichen;  das ist die Konvention, daß die Header mit einer Leerzeile, also mit zwei aufeinanderfolgenden Returns abgeschlossen werden.) und der Browser weißt was los ist und lädt sofort die neue Adresse.

Der Benutzer sieht dabei von der ersten Seite garnichts. Er bemerkt höchstens daß es ein wenig länger dauert, aber es wird keine erste Webseite oder sonstwas geladen. Es wird nur der Header übermittelt (den der Benutzer ja nicht sieht) und dann lädt der Webbrowser auch schon die neue Webseite unter der neuen Adresse. Die neue Adresse erscheint dann auch in der Anzeige, obwohl der Benutzer vielleicht nicht weiß wie er auf diese Adresse gekommen ist.

Anwendung findet das zum Beispiel um die Leute von einer Domainadresse auf eine andere umzugewöhnen. Beispiel: "http://www.lrz.de/ Einfach mal diese Adresse von Hand eintippen und aufrufen. Man wird sehen, daß man effektiv bei der Adresse "http://www.lrz-muenchen.de/" landet. Der Trick: Unter der ersten Adresse wurde ein Redirect gesendet der einen direkt zur zweiten Adresse weitergeleitet hat.

Weitere Anwendungen

Oft steckt da sogar noch etwas mehr dahinter. Es wird gerne verwendet um einfach und nur mit einem einzigen Webserver mehrere Domains zu verwalten. Dabei läßt man mehrere Domains (wie z.B. http://www.oktoberfest.de/ und http://www.pro-sieben.de/) auf dieselbe IP Nummer registrieren (siehe auch URL # Nummernadressen). Der Webserver bekommt nun trotzdem mit ob man auf ihn unter der Adresse "oktoberfest" oder "pro-sieben" zugreift. Für den Fall daß man unter "pro-sieben" zugreift, gibt er einfach die Hauptseite aus. Für den Fall aber, daß man unter "oktoberfest" zugreift verweist er einfach weiter an das Unterdirectory "http://www.pro-sieben.de/oktoberfest/" oder auch "http://www.oktoberfest.de/oktoberfest/". Das ist ein praktischer Weg eine weitere Domain mit eigenem Webinhalt auf dem gleichen Server laufen zu lassen, aber es verwirrt natürlich den Benutzer etwas.

Um solche un ähnliche Tricks perfekt machen zu können und auch ein Redirect mittels HTTP Header ausführen zu können ist es natürlich notwendig, den Webserver entsprechend konfigurieren zu können. Das ist nicht mit jedem Webserver möglich und wenn man einen Webserver anmietet, hat man oft auch nicht diesen vollen Zugriff auf den Webserver um solche Tricks zu installieren. Entsprechend kann der normale Web-Autor den Redirect Trick allenfalls in seinen CGI Scripts benutzen. Z.B. um den Benutzer jeden Tag automatisch auf eine andere Webseite weiterzuleiten oder auch um einen Benutzer abhängig von der Domain aus der heraus er zugreift (also ob er nun aus Deutschland oder Japan zugreift) auf unterschiedliche Adressen zu lenken (z.B. einen Websitemirror in Japan etc.).

Wie erzeugt man nun aber einen Zugriff auf ein CGI-Script. Nur ungern wird man die lange und unschöne Adresse des CGI-Script direkt angeben wollen, weil diese dann z.B.: "http://www.fascination.de/cgi-bin/weiterl.pl" heißen könnte. Viel besser ist es da einfach eine normale Webseite anzugeben z.B. "http://www.fascination.de/weiter" auf der dann ein einfaches HTML-Refresh steht. Als neue Adresse gibt man dann die Adresse des CGI-Scripts an. Dieses kann nun die ganzen Daten der Anfrage auswerten und verarbeiten und entsprechend einen HTTP-Location Header schicken, der einen dann zu der eigentlichen Seite bringt. Man hat hier also gleich zwei Weiterleitungen unterschiedlicher Art verwendet. Ob das technisch immer perfekt hinhaut ist dabei nicht ganz sicher, deswegen sollte man wenn möglich auf solche Tricks verzichten.

Eine andere Möglichkeit Zugriffe auf CGI-Scripts zu erzeugen besteht übrigens darin, Objekte (im einfachsten Falle Bilder) in eine Seite einzubinden, die beim Laden der Seite automatisch mitgeladen werden. Will man auf diese Weise ein Bild einbinden, gibt man auf der HTML-Seite für die Adresse des Bildes einfach die Adresse des CGI-Scripts an. Dieses kann nun alle Angaben der Anfrage auswerten und schickt dann einen HTTP-Location Header, welcher auf die Adresse eines normalen Bildes verweist. Das ist eine sehr einfache Möglichkeit einen Counter zu erstellen, wenngleich auch dieser Counter nur mit einigem Aufwand auch den aktuellen Counter-Stand anzeigen kann. Man kann damit aber zumindest intern erfassen wieviel Zugriffe erfolgen.

Und zum Schluß noch ein weiterer Trick: Will man auf seinem Webserver öfters am Tag Aktionen ausführen, aber kann man keine Batch-Jobs oder Cron-Jobs ausführen, so kann man auf diversen hochfrequentierten Seiten einfach kleine Bilder einbauen die auf eine CGI-Script verweisen. Jedesmal wenn die Seite geladen wird, startet nun das CGI-Script und kann die Aktionen ausführen (zum Beispiel den Spruch des Tages ändern oder bei einem Server um bestimmte Daten anfragen etc.). Man hat dadurch zwar keine Garantie immer zu einer bestimmten Uhrzeit ein Programm zu aktivieren, aber doch die hohe Wahrscheinlichkeit daß relativ oft das kleine Programm aktiviert wird.


www.fascination.de [Interna]
Aktuelles, Copyright, Impressum, Kontakt, Support, Gästebuch, Sitemap, Suchen, Credo, Aktionen, Legende, Statistik