selFMicha: relative Links verwenden (Anfänger)

Hallo,

ich habe eine Subdomain: sub.MeineURL.de und dort eine index.html. Diese wird bei Aufruf von sub.MeineURL.de angezeigt.

Der Dateibaum schaut so aus:

/
Hauptverzeichnis
sub.MeineURL

Im Hauptverzeichnis habe ich eine Bilddatei.png und möchte diese in die erwähnte index.html einbinden; dazu habe ich dort die Zeile eingefügt:

<img src="../Hauptverzeichnis/Bilddatei.png" alt="Bildtext">

Der String "Bildtext" wird angezeigt, das Bild nicht. **Wo ist mein Fehler? **

  1. Moin,

    ich habe eine Subdomain: sub.MeineURL.de und dort eine index.html. Diese wird bei Aufruf von sub.MeineURL.de angezeigt.

    vorweg: Verwende für anonymisierte Beispiele bitte die gemäß RFC2606 dafür vorgesehenen Beispieldomains example.net, example.org oder so (aber example.de gehört ausgerechnet nicht dazu). So vermeidest du Ärger für den Fall, dass deine erfunden Domains tatsächlich existieren.

    Der Dateibaum schaut so aus:

    /
    Hauptverzeichnis
    sub.MeineURL
    

    Im Hauptverzeichnis habe ich eine Bilddatei.png und möchte diese in die erwähnte index.html einbinden; dazu habe ich dort die Zeile eingefügt:

    <img src="../Hauptverzeichnis/Bilddatei.png" alt="Bildtext">
    

    Der String "Bildtext" wird angezeigt, das Bild nicht. Wo ist mein Fehler?

    Was du beschreibst, ist die Struktur im Dateisystem des Servers. Der Browser sieht das Ganze aber nur "von außen". Aus seiner Sicht sind die Hauptdomain und eine darunter angesiedelte Subdomain zwei völlig verschiedene Domains.

    Du musst beim Adressieren also komplett "von außen" aus URL-Sicht denken.

    Einen schönen Tag noch
     Martin

    --
    Manchmal kann man gar nicht so viel fühlen, wie man denkt.
    Und manchmal fühlt man so viel, dass man gar nicht denken kann.
  2. Hallo selFMicha,

    wie ist das Hauptverzeichnis von außen erreichbar? Ist die absolute URL der Bilddatei https://www.example.com/bilddatei.png ?

    In dem Fall wirst Du wohl auch mit dieser URL zugreifen müssen. Wie Martin schon schrieb, sind das aus Sicht des Browsers unterschiedliche Webseiten und du kannst mit ".." nicht aus dem Web-Root einer Domain hinaus. Wäre ja auch ein gruseliges Loch im System, wenn Du beliebig von einem Web aus über den ganzen Server turnen könntest. Äh, ok, es gibt genug Webseiten, die solche Löcher haben, aber dann sind fehlerhafte Scripte im Spiel.

    Falls Du auf dem Server Platz sparen willst bzw. die Bilddatei ab und zu aktualisierst, aber nur einmal pflegen willst, dann könntest Du, sofern mod_alias aktiv ist, in der .htaccess des sub-Web einen Alias definieren:

    Alias "/bilddatei.png" "/usr/web/micha/Hauptverzeichnis/bilddatei.png"
    

    Das ist der Haken an Alias: so weit ich weiß, kann man als physischen Pfad der Ressource keinen relativen Pfad angeben, es muss ein absoluter Pfad sein. Aber den kriegst Du sicherlich raus 😉

    Wenn das für mehr als ein Bild nötig wird, dann überlege Dir, ob Du gemeinsame Ressourcen in einem der beiden Webs einem "shared" Ordner legst und diesen Ordner als Verzeichnisalias im anderen Web sichtbar machst.

    → Apache-Doku: https://httpd.apache.org/docs/2.4/mod/mod_alias.html
    → Selfwiki: Aliasing_von_Webverzeichnissen

    Der Wiki-Artikel erzählt eine ganze Menge drumrum, lass Dich nicht verwirren.

    Rolf

    --
    sumpsi - posui - obstruxi
  3. Danke Euch! @DerMartin: Sehr gute Erklärung, so verstehe ich den Zusammenhang und konnte es so lösen. @RolfB: Der alias bringt mich wirklich weiter.

    Trotzdem noch eine Frage: Ich nutze die HTML-Seite "doppelt"

    • Lokal, offline --> hier nutze ich die relativen URLs
    • In der SubDomain, online --> Absolute URLs

    (Wie) kann ich das in der HTML-Seite (die per bash-code erstellt wird) als Variablen hinterlegen und nutzen, also (Luftcode):

    • URLinitLokal= "../Hauptverzeichnis/"
    • URLinitWeb= "example.org/"
    • URLinit=URLinitWEB # für die online-Variante

    und dann

    <P>"Text <A HREF=URLinit&"SeitenName.html">Link</A></P>
    
    
    1. Hallo selFMicha,

      äh, wird die HTML-Seite durch bash als CGI-Engine live erstellt? Oder nur einmalig und dann auf den Server hochgeladen?

      (Wie) kann ich das in der HTML-Seite (...) als Variablen hinterlegen

      In HTML kannst Du grundsätzlich keine Variablen hinterlegen. Im bash-Script aber sicherlich 😉

      Ich hatte so einen Job mal mit PHP zu lösen. Ich habe ein Config-Script geschrieben, das die umgebungsspezifischen Werte mit define festgelegt hat, und auf Server und Lokal einfach unterschiedliche Config-Scripte hinterlegt. Das Script wurde dann einfach inkludiert und damit waren auf dem Server andere Werte definiert als lokal.

      Ich bin kein Bashar - aber so rein hypothetisch sollte sich das doch mit dem source-Kommando lösen lassen.

      Rolf

      --
      sumpsi - posui - obstruxi
      1. Danke:

        wird die HTML-Seite durch bash als CGI-Engine live erstellt? Oder nur einmalig und dann auf den Server hochgeladen?

        Einmalig und dann auf den Server hochgeladen.

        In HTML kannst Du grundsätzlich keine Variablen hinterlegen. Im bash-Script aber sicherlich

        OK, dann werde ich zwei HTML-Versionen erzeugen die lokale und die online-Nutzung