horaeus: relativer Pfad höher als index.php nicht gefunden - Strato.de

problematische Seite

Hallo liebe Gemeinde,

mein Name ist Peer. Ich versuche mich gerade Selbstständig zu machen und wollte als Uhrmacher eine Anlaufstelle für Service und Reparaturen ins Netz zu stellen. Ich habe die Website versucht, komplett selbst aufzubauen mithilfe von ChatGPT. Ich bin am 23.12. vorerst fertig gewesen, nur der Transfer in den Webspace gestaltet sich schwierig. Ich habe keine Ahnung von Hosting und leider verweigert mein eigener Anbieter strato.de den Support, weil es angeblich zu sehr ins Detail geht. Ich hoffe daher, bei Euch Hilfe zu finden. Gerne nehme ich auch Vorschläge für einen besseren Anbieter entgegen.

Mein Problem ist, dass die Pfadangaben mit ../ für übergeordnete Ordner nicht funktionieren. Offline schon, nur bei Strato nicht. Davon hängt mein gesamtes Projekt ab, aber gerne könnt ihr mich eines Besseren belehren, was eine sinnvolle und sichere Ordnerstruktur angeht. Ich habe mein Projekt (offline und im Webspace) momentan so strukturiert: htdocs/horaeus/en/public beinhaltet alle pages von index.php und anderen. Das zugehörige Javascript: htdocs/horaeus/en/public/js php scripte für die Seite: htdocs/horaeus/src/ Inhalte wie Fotos aus dem Inventar: htdocs/horaeus/assets/inv dort liegen auch php scripte in verbindung mit dem Inventar htdocs/horaeus/assets/css das style.css für die gesamte Seite, sowohl für jetzt die englische Version als auch später die Deutsche Übersetzung

Da ich die css für die index.php zwei überordner drüber und dann wieder zwei unterordner tiefer abholen muss, rufe ich diese auf mit: <link rel="stylesheet" href="../../assets/css/style.css">

Offline in meiner Umgebung auf Windows mit xampp klappt das auch, nur im Webspace bekommt er das nicht gebacken.

Ich habe das Paket WordPress Hosting Basic gebucht, nutze aber kein WordPress. Angeblich konnte man auch ohne WordPress zu nutzen eine Seite hochladen, keine Ahnung, ob das Paket das Problem ist.

Um das Problem mal schlanker live zu demonstrieren, habe ich zwei Testprojekte angelegt.

Ich habe in meinen Webspace in Hauptverzeichnis (in Strato mit einem Haus gekennzeichnet) zwei Projekte liegen:

Testprojekt Simple:

Haus/simple/index.php

Haus/simple/subfolder/style.css

Ich habe die URL horaeus.net intern auf den Ordner simple umgeleitet in der index.php sieht der Verweis zur css so aus

<link rel="stylesheet" type="text/css" href="subfolder/style.css">

Ergebnis: die CSS wird gefunden👍

Testprojekt Simple2:

Haus/simple2/style.css

Haus/simple2/subfolder/index.php Ich habe die URL horaeus.eu intern auf den Ordner simple2/subfolder umgeleitet. In der index.php sieht der Verweis zur css so aus:

<link rel="stylesheet" type="text/css" href="../style.css">

Ergebnis: die CSS wird nicht gefunden👎

Inspector zeigt: www.horaeus.eu/:4 GET https://www.horaeus.eu/style.css net::ERR_ABORTED 404 (Not Found)

Hat jemand hilfreichen Input für mich, was das angeht? Ich wäre zu tiefem Dank verpflichtet.

  1. problematische Seite

    Moin,

    Testprojekt Simple2:

    Haus/simple2/style.css

    Haus/simple2/subfolder/index.php Ich habe die URL horaeus.eu intern auf den Ordner simple2/subfolder umgeleitet. In der index.php sieht der Verweis zur css so aus:

    <link rel="stylesheet" type="text/css" href="../style.css">

    Du kannst per HTTP (also im Browser) nicht auf höhere Verzeichnisse als Haus/simple2/subfolder zugreifen. Das was du vor hast geht nicht da Pfade im Dateisystem nichts mit den Pfaden in der URL zu tun haben (genau genommen müssen das in der URL noch nicht mal tatsächlich existierende Pfade/Dateinamen sein, aber das ist jetzt hier egal). Warum das bei dir lokal funktioniert kann ich dir jetzt auch nicht sagen, aber vermutlich zeigt localhost (bzw. die lokale Testdomain) auf ein höheres Verzeichnis.

    Gruß
    Tobias

    1. problematische Seite

      Hi Tobias,

      wie würde man dann eine Seite strukturieren, die eine deutsche und eine englische Version hat also unterschiedliche index.php, abhängig von der Sprache die man eingestellt hat aber beide auf dieselbe CSS zugreifen?

      ChatGPT bestätigt, dass man nicht höher als das root Verzeichnis navigieren kann, bestätigt aber auch, dass eine gängige Orderstruktur von 2-sprachigen Seiten üblicherweise so aussieht:

      Englisch Deutsch

      Auf die Nachfrage hin, wie man einerseits die URL auf das root Verzeichnis horaeus zeigen lassen kann, aber trotzdem die Seite index.php im Ordner horaeus/en/public dargestellt bekommt, antwortet er, dass man eine .htaccess-Datei im Root-Verzeichnis des horaeus-Ordners erstellen soll und da reinschreiben:

      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^horaeus.eu$ [NC]
      RewriteRule ^$ /en/public/ [L,R=301]
      

      Würde das dann morgen mal probieren, liege schon im Bett.

      Grüße Peer

      1. problematische Seite

        Moin,

        wie würde man dann eine Seite strukturieren, die eine deutsche und eine englische Version hat also unterschiedliche index.php, abhängig von der Sprache die man eingestellt hat aber beide auf dieselbe CSS zugreifen?

        ChatGPT bestätigt, dass man nicht höher als das root Verzeichnis navigieren kann, bestätigt aber auch, dass eine gängige Orderstruktur von 2-sprachigen Seiten üblicherweise so aussieht:

        Ein „üblicherweise“ oder irgendwelche Vorgaben gibt es da nicht, du kannst die Verzeichnisstruktur so wählen wie du möchtest. Und nimm das was ChatGPT ausspuckt bitte nicht unbedingt für bare Münze, da kann durchaus auch Müll dabei sein. Sinnvoll wäre es wohl en, de sowie assets in public zu packen und die Domain dann auf public zeigen zu lassen. Aber wie gesagt, du kannst es so festlegen wie es für dich am einfachsten ist.

        Auf die Nachfrage hin, wie man einerseits die URL auf das root Verzeichnis horaeus zeigen lassen kann, aber trotzdem die Seite index.php im Ordner horaeus/en/public dargestellt bekommt, antwortet er, dass man eine .htaccess-Datei im Root-Verzeichnis des horaeus-Ordners erstellen soll und da reinschreiben:

        Da ist ChatGPT wohl auf dem ganz falschen Dampfer: wie soll man dann die index aus dem de-Verzeichnis angezeigt bekommen?

        Gruß
        Tobias

        1. problematische Seite

          Hallo tk,

          wie soll man dann die index aus dem de-Verzeichnis angezeigt bekommen?

          Mit https://www.example.com/en/public/index.php?

          Natürlich gibt das keiner ein, der typische Abruf wird wohl eher https://www.example.com lauten.

          Ich bin nicht so der Apache-Experte, aber ich würde annehmen, dass man in der .htaccess mit DirectoryIndex index.php die Datei index.php als Defaultpage festlegt und dann mit AddHandler type-map .var festlegt, dass über eine index.php.var Datei die Weiterleitung auf die Sprachversion stattfindet.

          Vermutlich würde ich aber eine zentrale index.php schreiben, keine sprachspezifischen Varianten, und in der zentralen index.php den Accept-Language Header bzw. einen (Session-)Cookie mit der ausgewählten Sprache auswerten, um danach die sprachspezifische Version anzuzeigen.

          Rolf

          --
          sumpsi - posui - obstruxi
          1. problematische Seite

            Servus!

            Vermutlich würde ich aber eine zentrale index.php schreiben, keine sprachspezifischen Varianten, und in der zentralen index.php den Accept-Language Header bzw. einen (Session-)Cookie mit der ausgewählten Sprache auswerten, um danach die sprachspezifische Version anzuzeigen.

            im SELF-Wiki:

            PHP/Tutorials/Sprachauswahl_mittels_Accept_Language

            Herzliche Grüße

            Matthias Scharwies

            --
            Die Signatur findet sich auf der Rückseite des Beitrags.