RSS Feed

Die Grenzen der Frame-Weiterleitung sprengen

Veröffentlich am Dienstag, 29. Sep 2009 in Webentwicklung

Viele Hoster bieten günstige Domains ohne Webhosting Komponenten an. Bei einigen Hoster wie z.B. Strato handelt es sich aber leider nur um Domains mit der Möglichkeit der Frame-Weiterleitung. Das ist aber teilweise vor der Bestellung nicht zu sehen.

Manch einer wird sich eventuell darüber freuen, da er irgendwo ein kostenloses Hosting mit einer sehr langen URL hat und durch die Frameweiterleitung den Besuchern immer eine kurze Domain präsentieren kann. Doch die Sache hat auch ihre Haken.

Das Lesezeichen-Problem

Das navigieren innerhalb der Seite gestaltet sich für den Besucher, wie er es erwartet. Er kann alle Links anklicken und der Hauptframe öffnet daraufhin die richtige Seite. Auch das Navigieren mit den “Vor” und “Zurück” Buttons funktioniert tadellos. Aber sobald der Benutzer eine Seite gefunden hat, die er seinen Favoriten hinzufügen möchte fängt der Ärger an. Nicht nur, dass der Name des Lesezeichens oft nur die Domain enthält, viel schlimmer ist, dass das Lesezeichen auch auf die selbige zeigt. Wenn der Besucher also später das Lesezeichen aufruft kommt er nicht auf die gewünschte Seite, sondern auf die Startseite und muss von dort aus erst wieder mühsam auf die richtige Seite navigieren.

Das Suchmaschinen-Problem

Die meisten Suchmaschinen (Google eingeschlossen) haben Probleme mit framebasierten Seiten. Sie sehen oft nur das Frameset-Konstrukt und nicht die Inhalte der einzelnen Frames. Das bedeutet in den meisten Fällen, das eure Internet-Seiten, die tausende von Seiten haben können, bei Suchmaschinen genau EINE Seite als Eintrag enthalten. Und das ist die Startseite oder genauer gesagt das Frameset der Domain. Eine Möglichkeit den Suchmaschinen doch die anderen Seiten mitzuteilen ist das Erstellen einer Sitemap. Diese solltet ihr dann aber manuell den Suchmaschinen mitteilen, da sie die Datei unter umständen auch nicht finden können. Dabei könnt ihr entweder die Domain um die Seitennamen erweitern, oder aber die URL eures Webspace verwenden und um die Seitennamen erweitern.

Die Lösung

Beide Probleme zeigen also, dass Frame-Weiterleitungen ein Relikt aus alten Zeiten sind und nicht mehr verwendet werden sollten. Aber was kann man tun, wenn der Hoster keine HTTP-Weiterleitung bietet, oder dafür einen Aufpreis verlangt? Ganz einfach, man bedient sich eines recht simplen Tricks. Dazu legt man zuerst einen Ordner mit beliebigen Namen auf dem Server an. Dann stellt man die Domain so ein, dass sie als Ziel den Ordner enthält. In diesem Ordner erzeugt man dann eine index.php (oder eine Index-Datei einer andern Scriptsprache) mit folgendem Inhalt:

<script type="text/javascript">
	top.location.href = "http://example.com";
</script>

Dieser einfache JavaScript Snippet ändert die URL des Top-Frame auf einen neuen Wert. Wenn der Besucher also eure Domain aufruft, die lediglich eine Frame-Weiterleitung untersützt, sorgt der Code dafür, dass das oberste Frameset auf eine andere URL umgeleitet wird. Hierbei müsste ihr natrülich “example.com” durch eure eigene Domain ersetzen (das “http://” dabei nicht vergessen). Für alle Besucher, die keine JavaScript Unterstützung aktiviert haben solltet ihr zusätzlich einen NOSCRIPT Tag einfügen der einen Link enthält:

<noscript>
	Sollten Sie nicht weitergeleitet werden, klicken Sie auf den folgenden Link:
	<a href="http://example.com" target="top">http://example.com</a>
</noscript>

Der Link bekommt dabei das Attribut “traget” mit dem Wert “top”. Somit wird auch hier der Link im obersren Frameset aufgerufen. Um Benutzern, die ein Lesezeichen auf eure umzuleitende Domain haben, könntet ihr auch noch den Request an die Domain anhängen. Somit wird der Besucher dann auf die richtige Zielseite auf der anderen Domain umgeleitet. Zusammengesetzt sieht das ganze Beispiel dann wie folgt aus (oder ähnlich in einer anderen Skriptsprache):

<script type="text/javascript">
	top.location.href = "http://example.com".$_SERVER['REQUEST_URI'];
</script>
<noscript>
	Sollten Sie nicht weitergeleitet werden, klicken Sie auf den folgenden Link:
	<?php echo '<a href="http://example.com'.$_SERVER['REQUEST_URI'].'" target="top">http://example.com'.$_SERVER['REQUEST_URI'].'</a>'; ?>
</noscript>

Diesen Codeblock platziert Ihr einfach im BODY Tag der Index-Seite. Dabei solltet ihr aber Besuchern ohne JavaScript eine schönere Seite präsentieren, als eine die nur den Link auf weißem Untergrund enthält.

Da ich selbst noch eine Domain besitze, die ich leider zur Zeit noch nicht auf ein aktuelles Hostingpaket umziehen kann, könnt ihr euch das ganze in einem kleinen Beispiel auch ansehen. Die Domain ist mittlerweile endlich umgezogen und daher habe ich nun das Beispiel auf die alte Subdomain abgeändert. Dazu solltet ihr einfach JavaScript vorübergehen deaktivieren, damit ihr auch die Seite und den Quelltext betrachten könnt. Wenn ihr dann JavaScript wieder aktiviert und die Seite aktualisiert, solltet ihr auf meinen Blog umgeleitet werden.

Beispiel

Mit diesem Trick könnt ihr also die Frame-Weiterleitung umgehen, aber ihr präsentiert dann dem Besucher die entsprechend andere URL, als sie aufgerufen haben. Dies sollte aber einer schönen URL aber dafür der eingeschränkten Suchmaschinenfreundlichkeit und der Verhinderung von Lesezeichen bevorzugt werden. Ihr könnt weiterhin die schöne URL in Mails verbreiten und den Besucher trotzdem umleiten. Wenn ihr die Domain vollständig nutzen möchtet bleibt euch leider nichts anderes Möglich, als diese in das Webhosting-Paket zu übertragen oder zu einem reinen Domain-Anbieter zu wechseln, der auch eine HTTP-Weiterleitung anbietet, auch wenn das eventuell einen Aufpreis bedeutet.

  • Twitter
  • email
  • RSS
  • Facebook
  • MySpace
  • Google Bookmarks
  • MisterWong.DE
  • del.icio.us
  • LinkArena
  • Digg
  • Sphinn
  • Mixx
  • Reddit
  • Slashdot
  • Yigg
  • Technorati

Hinterlasse einen Kommentar

  1. B4ttl3m4st3r sagt:

    Danke für diesen Beitrag.
    Bin selber bei Strato und habe frame-redirection.

    Kotzt mich voll an -.-

    Das Witzige ist ja……

    Domain http://fhx-online.com verweist auf http://fhx-online.netai.net.

    Wenn ich nun aber GET-Parameter mit an die kurze Domain hänge (z.B. http://fhx-online.com/index.php?action=delete_comment)
    dann werden die Parameter mit an die verwiesene URL übergeben.

    komische Sache…..

    • Bernhard sagt:

      Wenn du möchtest, dass die Parameter nicht übergeben werden, dann könntest du sie einfach vorher entfernen, bevor du den Redirect im JavaScript einfügt. Z.B: wie folgt:

      <script type="text/javascript">
         top.location.href = "http://example.com". str_replace($_SERVER['QUERY_STRING'], '', $_SERVER['REQUEST_URI']);
      </script>
      

      Das würde alle Parameter entfernen und somit immer auf die Seite weiterleiten, die du in der kurzen URL angegeben hast.

      Ich habe mittlerweile die Domain auf ein aktuelles Paket umgestellt. Dort habe ich die Möglichkeit eine DNS Weiterleitung zu machen. Mein alter Vetrag hatte 0,19€ pro Monat für die Domain gekostet und der neue kostet nun 0,49€. Aber da ich dadurch einen “neuen” Vertrag bekommen habe, ist das erste Jahr wieder kostenlos gewesen.

      Also versuche es mal mit meinem Trick oder überlege dir den Vertrag auf einen aktuellen mit HTTP-Weiterleitung oder DNS-Eintrag umzustellen.

Hinterlasse einen Kommentieren

Impressum