Benutzer:

Passwort:

> Homepagebau > URL umleiten  

URL umleiten

Wie man eine URL auf eine andere umleiten kann

Der Header-Redirect

Hidden Frames

Server-Redirect mit mod_rewrite


Der Header-Redirect

Notieren Sie innerhalb des Headers

<HEAD>
   ...
   <META HTTP-EQUIV="Refresh" CONTENT="3; URL=http://www.junko.de/">
   ...
</HEAD>

Diese Angabe bewirkt, daß nach 3 Sekunden Wartezeit die Adresse www.junko.de geladen wird. Beachten Sie die etwas merkwürdige Notierung: Zeitangabe und URL stehen in denselben Anführungsstrichen. Statt einer absoluten können Sie auch eine relative Adresse angeben.

Statt 3 können Sie auch 0 schreiben. Die Umleitung erfolgt dann sofort. Ich halte das aber für einen schlechten Stil, da Sie damit gleichzeitig die "Zurück"-Funktion des Browsers ihres Besuchers außer Funktion setzen. Wenn der Besucher "Zurück" klickt, gelangt er auf die Seite zurück, von der aus er umgeleitet wurde und wird sofort erneut umgeleitet. Er kommt also nicht dahin zurück, wohin er eigentlich wollte. Um das zu vermeiden, sollten Sie mindestens eine 1 schreiben.

Außerdem sollten Sie bedenken, daß nicht alle Browser diesen Header-Redirect unterstützen. Der Body Ihres Umleitungsdokumentes sollte also zumindest einen Hinweis darauf enthalten, daß jetzt eine Umleitung erfolgen sollte und einen Link, so daß der Besucher die Umleitung auch selbst vornehmen kann.


Hidden Frames

Bauen Sie die Umleitungsseite nach folgendem Muster auf:

<HTML>
<HEAD>
...
</HEAD>

<FRAMESET COLS="100%,*" BORDER="0" FRAMEBORDER="0" FRAMESPACING="0">
   <FRAME SRC="http://www.junko.de/" NORESIZE FRAMEBORDER="0">
</FRAMESET>

<BODY>
<NOFRAMES>
...
</NOFRAMES>
</BODY>
</HTML>

Dies bewirkt, daß ein einiziger unsichtbarer Frame für ganze Seite eingerichtet wird, in den dann die Zielseite geladen wird. Um dieses Frameset einzurichten, muß man etwas mit den Tücken der unterschiedlichen Browser kämpfen. COLS="100%" würde theoretisch reichen um einen einzelnen Frame über die ganze Seite einzurichten. Netscape möchte aber mindestens 2 Frames haben. Deshalb ist die Angabe COLS="100%,*" erforderlich. Damit werden 2 Frames eingerichtet, einer mit 100% Breite und einer für den Rest (also nichts). Außerdem gibt es Unterschiede bei den Browsern, wenn es darum geht, den Frame-Rahmen unsichtbar zu machen. Für Netscape schreibt man BORDER="0" innerhalb des <FRAMESET>-Tags, für Microsoft FRAMEBORDER="0" FRAMESPACING="0". FRAMEBORDER="0" innerhalb des <FRAME>-Tags ist schließlich die Notation, die HTML 4.0 vorsieht.

Je nach Sichtweise ein Vor- oder ein Nachteil ist es, daß im Browser die Adresse des Framesets angezeigt wird. Wenn man wünscht, daß stattdessen die Adresse der eingebundenen Seite angezeigt wird, gibt es als einfache Lösung nur die Verwendung des oben beschriebenen Header-Redirects.

Auch hier sollte man wieder bedenken, daß Frames nicht von jedem Browser unterstützt werden. Auch die Robots von Suchmaschinen nehmen über Frames eingebundene Seiten in den allermeisten Fällen nicht mit in ihr Verzeichnis auf. Für diese Fälle sollten Sie in jedem Fall einen <NOFRAMES>-Bereich anlegen, wie oben demonstriert. Hier kann dann z.B. stehen "Leider unterstützt Ihr Browser keine Frames und deshalb kann sehen Sie jetzt nicht die Seite, die ich Ihnen eigentlich zeigen wollte.". Außerdem fügen Sie noch einen Link ein, dem dann die Besucher ohne Frames und die Suchmaschinen folgen können, um doch noch auf die gewünschte Seite zu gelangen.

Bei den hidden Frames gibt es schließlich noch ein Problem mit den Links auf der eingebundenen Seite. Sie laden die nächste Seite jetzt wiederum in das Frameset, so daß Titel und im Browser angezeigte URL sich nicht ändern. Dies kann man aber beheben, indem man in den Header der eingebundenen Seite die Zeile

<BASE TARGET="_top">

aufnimmt.


Server-Redirect mit mod_rewrite

Wahrscheinlich bieten auch andere Web-Server die Möglichkeit, einen Redirect durchzuführen. Die hier beschriebene Methode funktioniert jedoch nur mit dem Apache-Server, und auch dann nur, wenn das Modul mod_rewrite installiert ist (Admin fragen oder einfach ausprobieren).

Speichern Sie in dasselbe Verzeichnis, in dem die umzuleitende HTML-Datei gespeichert ist (bzw. wäre), eine Datei mit dem Namen ".htaccess". (übersehen Sie nicht den Punkt am Anfang des Dateinamens). Die .htaccess-Datei ist eine ASCII-Datei, die Sie eigentlich mit jedem Texteditor erstellen können. Wenn Sie aber versuchen, mit Notepad, dem Editor von Windows, eine Datei unter dem Namen .htaccess abzuspeichern, macht Notepad daraus .htaccess.txt. Wenn Sie dann versuchen, die Datei im Windows Explorer umzubenennen, sieht Windows (98) das etwas anders und sagt zu ihnen: "Geben Sie einen Dateinamen ein!". Sie können die Datei dann z.B. erst mal unter einem anderen Namen fertigstellen, auf ihren Web-Server übertragen und dort mit Hilfe Ihres FTP-Programms umbenennen. Sie sollten die Datei im ASCII-Modus auf den Web-Server übertragen.

In die Datei schreiben Sie:

RewriteEngine On
RewriteRule ^(.*)mydocument.html$ http://www.adomain.de/afolder/adocument.html [R]

Den HTTP-Request zur Seite mydocument.html beantwortet der Server jetzt mit dem Ergebnis 302 (Moved temporarily) und gibt die neue URI zurück. Der Browser holt sich dann das Dokument, auf das umgeleitet wurde. Diese Methode wird wahrscheinlich am besten von allen Browsern unterstützt, dafür hat sie die höchsten Anforderungen auf der Server-Seite.

mod_rewrite bietet aber noch einen ganzen Sack voll weiterer Möglichkeiten!

Noch ein Beispiel: Eine fremde Website bindet Bilder aus einem bestimmten Verzeichnis von Ihrer Website ein, und Sie möchten das verhindern, weil Sie nicht gefragt wurden und deshalb nicht bereit sind für den entstehenden zusätzlichen Traffic zu zahlen. Jetzt können Sie z.B. folgende .htaccess-Datei zum Einsatz bringen:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://.*mydomain\.de/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://.*mydomain\.de*$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^(.*)jpg$ http://www.mydomain.de/images/smile.jpg [L,R]

Diese Datei bewirkt, daß alle jpg-Dateien, die in eine fremde Seite eingebunden sind (also einen HTTP-Referer ungleich der eigenen Domain haben), durch die Datei smile.jpg ersetzt werden. Wenn kein HTTP-Referer übergeben wird, was z.B. bei Besuchern der Fall sein kann, die hinter einem Firewall sitzen, wird das Originalbild geliefert.

Eine genaue Beschreibung aller Möglichkeiten von mod_rewrite findet sich hier (auf Englisch).


Diese Seite wurde zuletzt aktualisiert am 13.09.2003
All contens Copyright © 1998-2009 by Stephan Wessel