Carla: Umleitung, falls Seite nicht erreichbar

Hallo Ihr Lieben,

ich habe eine fest definierte Startseite in unserem Büro, welche als Subdomain unserer Firmenhomepage angelegt ist, für alle Browser eingerichtet.

Leider kommt es hier manchmal vor, dass es das Internet nicht tut, dass heisst, dass die Fritzbox keine Verbindung aufbauen kann ... ist leider so.

D.h. dann ist auch meine Subdomain nicht erreichbar.

Gibt es eine Möglichkeit über eine lokale html-Seite und Javascript vorher zu prüfen, ob die Seite (http://subdomain.meine-seite.de) verfügbar ist und je nachdem eine Weiterleitung zur Subdomain oder eben auf eine alternative lokale Seite (keineverbindung.html) zu veranlassen?

Vielen Dank und ganz liebe Grüße,

Eure Carla

  1. So wie du das schilderst - nein.

    Wie ich es verstehe ist der Webserver bei euch im Büro. Da euer Router manchmal nicht will (die sind zickiger als so manche Frau !!), ist der Webserver nicht erreichbar. Demzufolge hat man keinerlei Logik die dann inkraft treten kann. Irgendwas muss ja sagen wenn Verbindung = false, dann gehe auf die html Seite.
    Es gibt Möglichkeiten bei diversen Fehlern (404 etc...) auf eine fest definierte Seite zu springen. Dass erledigt dann aber alles der Webserver. Dieser ist bei deinem Scenario aber nicht erreichbar.

    Gruß
    Zickiger
    T-Rex

    1. Gibt es eine Möglichkeit über eine lokale html-Seite und Javascript vorher zu prüfen, ob die Seite (http://subdomain.meine-seite.de) verfügbar ist und je nachdem eine Weiterleitung zur Subdomain oder eben auf eine alternative lokale Seite (keineverbindung.html) zu veranlassen?

      So wie du das schilderst - nein.

      Nun ja, unter bestimmten Voraussetzungen schon gegeben sei die eine lokale HTML-Datei und eine JavaScript-Datei auf dem Server die eine bestimmte (namentlich bekannte) Funktion, Variable oder ähnliches deklariert.

      Die lokale HTML-Datei bekommt z.B. folgenden Inhalt:

      <!doctype html>  
      <html>  
      	<head>  
      		<script type="text/javascript" src="http://www.example.org/jquery.js"></script>  
      		<script type="text/javascript">  
      			window.onload = function() {  
      				if(typeof $ != 'undefined') {  
      					location.href = "http://www.example.org";  
      				}  
      				else {  
      					document.body.classList.remove('hide');  
      				}  
      			}  
      		</script>  
      		<style type="text/css">  
      			.hide {  
      				visibility: hidden;  
      			}  
      		</style>  
      	</head>  
      	<body class="hide">  
      		Seite nicht erreichbar blabla  
      	</body>  
      </html>
      

      Das load-Event wird gefeuert, sobald jquery.js geladen wurde oder festgestellt wurde das es nicht geladen werden kann.

      Die Funktion testet dann ob das jquery-Objekt existiert, wenn ja, dann ist die Seite erreichbar und es wird weitergeleitet, wenn nicht wird body sichtbar. Der Inhalt von body ist dann die gewünschte Meldung dass die Seite nicht erreichbar ist.

      Eventuell könnte es zu Problemen mit dem Caching von www.example.org/jquery.js kommen.

      Alternativ könnte das ganze bestimmt auch mit Websockets oder mit Ajax realisieren, eventuell auch noch einen Interval einbauen der dann automatisch alle 30sec (oder in welchem Interval auch immer) neu prüft und ggf. weiterleitet.

      MfG
      bubble

      --
      If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
      1. Nun ja, unter bestimmten Voraussetzungen schon gegeben sei...

        *Nun ja, unter bestimmten Voraussetzungen schon. Gegeben sei...

      2. Und wie erreicht man die HMTL Seite, wenn man den Webserver (und damit den Server auf dem diese HTML Seite liegt) nicht erreicht?

        Gruß
        erreichbarer
        T-Rex

        1. Und wie erreicht man die HMTL Seite, wenn man den Webserver (und damit den Server auf dem diese HTML Seite liegt) nicht erreicht?

          _lokale_ HTML-Datei

          Wenn man die nicht mehr erreicht, hat man ganz andere Probleme :D

          MfG
          bubble

          --
          If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
          1. _lokale_ HTML-Datei

            Auf dem Clientrechner oder wie?

            Gruß
            Schlauchstehnder Feuerwehrmann
            T-Rex

            1. _lokale_ HTML-Datei
              Auf dem Clientrechner oder wie?

              Da Carla von einer lokalen Datei gesprochen hat, gehe ich davon aus, ja.

              Oder man stopft sie irgendwo ins lokale Netzwerk, dass man, wenn Änderungen anstehen nicht an jeden Rechner muss.

              MfG
              bubble

              --
              If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
              1. Da Carla von einer lokalen Datei gesprochen hat, gehe ich davon aus, ja.

                Es wurde aber auch von einer Firmenwebseite gesprochen. Und diese sollte doch von extern erreichbar sein?
                Vielleicht ist Carla auch kein Experte, sondern die arme Sau in der Firma, die gezwungen wird sich um die Angelegenheit zu kümmern ohne groß Ahnung zu haben. Da kann man schon das ein oder andere verwechseln.

                Gruß
                Interpreter
                T-Rex

                1. Da Carla von einer lokalen Datei gesprochen hat, gehe ich davon aus, ja.

                  Es wurde aber auch von einer Firmenwebseite gesprochen. Und diese sollte doch von extern erreichbar sein?

                  Zu der soll ja weitergeleitet werden, wenn sie erreichbar ist, ansonsten halt die Fallback-Seite.
                  Die muss ja dann lokal (entweder auf dem Client-Rechner oder im lokalen Netzwerk) existieren.

                  Also vorausgesetzt, dass diese lokale HTML-Datei erreichbar ist, ist es möglich (deswegen habe ich von bestimmten Voraussetzungen gesprochen)

                  Alles weitere hängt nun von den genauren Begebenheiten ab, es aber von vorn herein auszuschließen wäre mMn. falsch.

                  Vielleicht ist Carla auch kein Experte, sondern die arme Sau in der Firma, die gezwungen wird sich um die Angelegenheit zu kümmern ohne groß Ahnung zu haben. Da kann man schon das ein oder andere verwechseln.

                  Da stimm ich dir voll und ganz zu, aber deswegen hat sie ja auch gefragt.

                  MfG
                  bubble

                  --
                  If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
                2. Vielleicht ist Carla auch kein Experte, sondern die arme Sau in der Firma, die gezwungen wird sich um die Angelegenheit zu kümmern ohne groß Ahnung zu haben. Da kann man schon das ein oder andere verwechseln.

                  Ja das ist so :-(

                  Also nochmal:
                  Auf dem Webserver (nicht im Büro) liegt die Seite subdomain.meine-seite.de. Im lokalen Netz liegt die Seite keinnetz.html. Da die Fritzbox leider manchmal keine Internetverbindung aufbaut (liegt an der Telekom und ist auch nicht zu ändern - plattes Land, ohne Kabel und ohne LTE) wollte ich eine Abfrage in einer lokalen Datei, z.B. start.html, die dann prüft, ob subdomain.meine-seite.de erreichbar ist, und wenn nicht die keinnetz.html aufruft ...

                  Mmmh ... hoffe Ihr könnt mir helfen ;-(

                  LG, Carla

                  1. Hallo,

                    Mmmh ... hoffe Ihr könnt mir helfen ;-(

                    Was gefällt dir an bubbles Vorschlag denn nicht?

                    Gruß
                    Kalk

                  2. Okay, ich hab mal mit Ajax und WebSockets rumgespielt und festgestellt, dass beides nicht ohne weiteres funktionieren wird.

                    Desweiteren hab ich mal wegen dem Caching ein wenig rum probiert und festgestellt, dass es eventuell (das hängt von der Webserver-Konfiguration ab) funktionieren kann.

                    Die lokale HTML-Datei (diese dient sowohl zum Test ob die Website erreichbar ist, als auch als Fehlermeldung/keineverbindung.htm):

                    <!doctype html>  
                    <html>  
                    	<head>  
                    		<script type="text/javascript" src="###js_source###?nocache"></script>  
                    		<script type="text/javascript">  
                    			window.onload = function() {  
                    				if(typeof ###object### == 'undefined') {  
                    					document.body.classList.remove('hide');  
                    				}  
                    				else {  
                    					location.href = "###website###";  
                    				}  
                    			}  
                    		</script>  
                    		<style type="text/css">  
                    			.hide {  
                    				visibility: hidden;  
                    			}  
                    		</style>  
                    	</head>  
                    	<body class="hide">  
                    		###content###  
                    	</body>  
                    </html>
                    

                    Zu der sei nun folgendes gesagt, alles was ###name### ist muss ersetzt werden mit den richtigen Daten.
                    ###website### wird mit der URL zu der geleitet werden soll ersetzt (also wahrscheinlich subdomain.example.org)
                    ###content### wird mit dem Inhalt ersetzt, der die lokale keineverbindung.htm darstellt.

                    ###js_source### und ###object### sind so ziemlich unzertrennlich.
                    ###js_source### wird mit der URL zu einer Javascript-Datei der Webseite ersetzt. Hinzu kommt, dass diese Javascript-Datei igendeine globale Funktion/Variable definieren muss.
                    ###object### wird mit der globalen Funktion/Variable ersetzt.

                    Nun der Knackpunkt mit dem Caching. Standardmäßig wird nicht gecacht, wenn ein Querystring an die URL angehängt wird (oben ist das ?nocache).

                    Beispiel:
                    ###website### = http://subdomain.example.org
                    ###content### = ACHTUNG: Die Website ist momentan nicht erreichbar!
                    ###js_source### = http://subdomain.example.org/scripts/js/jquery.js
                    ###object### = $

                    jquery (und auch andere Frameworks) definiert eine globale Variable names $ somit wird $ definiert, wenn die Webseite erreichbar ist und somit kann dann auch umgeleitet werden.

                    Am besten einfach mal die Webseite aufrufen und gucken ob im Quelltext irgendas wie <script type="text/javascript" src="*****jquery******"></script> steht (Beispiel: Quelltext vom SelfHTML-Forum, hier wird auch jquery eingebunden), dann kannst du obiges Beispiel verwenden, WENN src nicht auf einen anderen Server zeigt.

                    Detailreicher kann ich es nicht erklären, da halt die Informationen zur Website fehlen.

                    Eine andere Möglichkeit fällt mir nicht ein, wenn man den Server unberührt lässt und nur Javascript verwenden will/kann/darf.

                    MfG
                    bubble

                    --
                    If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
      3. Om nah hoo pez nyeetz, bubble!

        Eventuell könnte es zu Problemen mit dem Caching von www.example.org/jquery.js kommen.

        Ungetestete Idee:

        In einem I-Frame google mit einem zufälligen Suchbegriff aufrufen. Mit JS prüfen, ob es geklappt hat. (frame.location.href?)

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Schweiß und Schweißroboter.

        1. In einem I-Frame google mit einem zufälligen Suchbegriff aufrufen. Mit JS prüfen, ob es geklappt hat. (frame.location.href?)

          Daran hab ich noch garnicht gedacht. Mal testen :)

          MfG
          bubble

          --
          If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
        2. Hi,

          In einem I-Frame google mit einem zufälligen Suchbegriff aufrufen. Mit JS prüfen, ob es geklappt hat. (frame.location.href?)

          Same origin policy ...

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
          1. Same origin policy ...

            Ist mir dann auch aufgefallen, mMn doof, dass das auch beim Lesen der location.href greift =/

            MfG
            bubble

            --
            If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
            1. Hi,

              Same origin policy ...
              Ist mir dann auch aufgefallen, mMn doof, dass das auch beim Lesen der location.href greift =/

              Naja, in der URL könnten sich ja auch Parameter verstecken, die man sonst auslesen könnte ...

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...
              Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
              1. Same origin policy ...
                Ist mir dann auch aufgefallen, mMn doof, dass das auch beim Lesen der location.href greift =/
                Naja, in der URL könnten sich ja auch Parameter verstecken, die man sonst auslesen könnte ...

                Nunja, ich bin davon ausgegangen, dass Carla keine Dateien auf den Server schieben darf, dadurch wäre diese Möglichkeit wohl ausgeschlossen, oder versteh ich grad was falsch?

                MfG
                bubble

                --
                If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
                1. Om nah hoo pez nyeetz, bubble!

                  Same origin policy ...
                  Ist mir dann auch aufgefallen, mMn doof, dass das auch beim Lesen der location.href greift =/
                  Naja, in der URL könnten sich ja auch Parameter verstecken, die man sonst auslesen könnte ...
                  Nunja, ich bin davon ausgegangen, dass Carla keine Dateien auf den Server schieben darf, dadurch wäre diese Möglichkeit wohl ausgeschlossen, oder versteh ich grad was falsch?

                  Ja. MudGuard hat lediglich eine Begründung geliefert, warum die SOP auch das Auslesen von location.href verhindert.

                  Matthias

                  --
                  Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Canna und Cannabis.

                  1. Naja, in der URL könnten sich ja auch Parameter verstecken, die man sonst auslesen könnte ...
                    Nunja, ich bin davon ausgegangen, dass Carla keine Dateien auf den Server schieben darf, dadurch wäre diese Möglichkeit wohl ausgeschlossen, oder versteh ich grad was falsch?
                    Ja. MudGuard hat lediglich eine Begründung geliefert, warum die SOP auch das Auslesen von location.href verhindert.

                    Ah, so wird natürlich ein Schuh draus. :)

                    MfG
                    bubble

                    --
                    If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
    2. Wie ich es verstehe ist der Webserver bei euch im Büro.

      Nein, der Webserver steht nicht in unserem Büro, sondern im WWW ...

      Der Router will nicht, weil die Telekom keine vernünftige Leitung hinkriegt ... ist aber nicht zu ändern.

      LG, Carla

      1. Darfst du Dateien auf den Webserver hochladen?

        Wenn ja könnte man eine simple Javascript-Datei hoch laden in der einfach nur eine Weiterleitung zur Startseite erfolgt. Diese dann einfach in deine lokale HTML-Datei einbinden und fertig.

        MfG
        bubble

        --
        If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
  2. Hallo,

    Gibt es eine Möglichkeit über eine lokale html-Seite und Javascript vorher zu prüfen, ob die Seite (http://subdomain.meine-seite.de) verfügbar ist und je nachdem eine Weiterleitung zur Subdomain oder eben auf eine alternative lokale Seite (keineverbindung.html) zu veranlassen?

    Ja.

    Du legst eine html-Seite auf jeden Rechner und rufst diese lokal auf.

    Diese Seite zeigt zwei Informationen:
    1. Verbindung wird geprüft (display:inline)
    2. Verbindung nicht möglich (display:none)

    Danach rufst du zeitverzögert, sagen wir mal 5 sec, eine JS-Funktion auf, die 1. unsichtbar und 2. sichtbar macht.

    Danach lädst du eine Javascript-Datei von dem unzuverlässigen Server. Wenn Server innerhalb von 5 sec erreichbar, wird das JS ausgeführt und verzweigt auf die gewünschte html- Seite des Servers. Ersetzt also die aktuelle Seite.

    Wenn Server nicht erreichbar, greift die zeitverzögerte Funktion und meldet, dass der Server nicht erreichbar ist.

    Gast

    1. Danach lädst du eine Javascript-Datei von dem unzuverlässigen Server. Wenn Server innerhalb von 5 sec erreichbar, wird das JS ausgeführt und verzweigt auf die gewünschte html- Seite des Servers. Ersetzt also die aktuelle Seite.

      Danach heißt mit Javascript nachladen? Wenn ja greift hier auch die Same Origin Policy und es ist nicht möglich =/

      Ansonsten ist es doch vom Prinzip her der gleiche Vorschlag den ich unterbreitet hab oder?

      MfG
      bubble

      --
      If "god" had intended us to drink beer, he would have given us stomachs. - David Daye