Website wird nicht korrekt angezeigt, Bilder spucken einen 404-Fehler aus

  • Hallo zusammen,


    ich bin neu hier im Forum und neu im Thema "Webhosting", entschuldigt deshalb meine Unwissenheit oder eventuell dumme Folgefragen.


    Bei netcup habe ich mir das "Webhosting 1000"-Paket zugelegt und eine inklusive Domain erstellt. Der normale Dokumentenstamm ist ja /httpsdocs. Da ich aber noch zwei weitere Domains habe wollte ich das Ganze aufteilen. Meine neue Struktur sieht wie folgt aus:


    /sites/Domain1

    /sites/Domain2

    /sites/Domain3


    Sprich: Ich habe einen neuen Dokumentenstamm angelegt, für jede Domain einen. Diesen habe ich auch erfolgreich geändert, zwei von drei Domains zeigen noch die Standard netcup Nachricht "Hier entsteht eine Website an" (Oder so ähnlich)

    Auf einer Website wollte ich dann allerdings schon einmal etwas HTML/CSS testen. Hier kommt dann das Problem:

    Ich habe in einem der Domain-Ordner einen Ordner mit dem Namen images erstellt. Pfad wäre dann ja /sites/Domain1/images/NameDesBildes, richtig? Da ich dann nicht mehr weitergekommen bin habe ich mir bereits andere Forum-Beiträge mit demselben Problem angeschaut, ich warte vergeblich auf eine Lösung... Lokal funktioniert die Verlinkung natürlich perfekt, alles wird korrekt angezeigt, aber das Webhosting verhält sich natürlich anders bzw. verhält sich anders, wenn man dann von außen auf die Domain zugreifen möchte.

    - Beitrag 1: Bilder auf eigenem Webspace verlinken schlägt leider fehl.
    - Beitrag 2: Bildresourcen (png) (img tag) -> 404 auf netcup, funktionieren lokal


    Hier habe ich die dort beschriebenen Tipps angewendet. Bilder in einen komplett neuen Ordner verschoben, Berechtigungen geändert etc.


    Auch habe ich versucht auf den /sites/domain1/images Ordner über das Web zuzugreifen. Wenn ich htttps//:domain1.de/images eingebe bekomme ich einen 403-Fehler, aber wenn ich dann das Bild suche gibt er mir einen 404 Not Found aus. Meine Frage diesbezüglich: Wie funktioniert hier die korrekte Verlinkung im HTML-Code auf den Ordner? Geht das überhaupt so?


    Mit dem Problem verbunden ist auch meine style.css-Datei. Gehe ich auf die Seite und untersuche sie, dann wird mir index.html ganz normal angezeigt, wenn ich die Sachen, die einen 404-Fehler verursachen, entferne, aber in meiner style.css-Datei ist nichts, dementsprechend sieht die Website aus... Diese Datei befindet sich im gleichen Ordner wie index.html


    Anbei einmal etwas Code, der vereinfach das Ganze vielleicht:


    Code
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
        <title>Meine Seite</title>
        <link rel="shortcut icon" href="https://domain1.de/images/name.png"> # Das war mein kläglicher Versuch den Ordner zu finden
        <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"> # Das wird bei der Untersuchung der Seite angezeigt
        <link rel="stylesheet" href="style.css"> # Verlinkung zu style.css funktioniert nicht
    
    </head>

    Vielleicht stelle ich mich auch extrem doof an und es gibt eine einfache Lösung dafür, aber scheinbar klappt die Verlinkung einfach nicht.

    Bilde zur Visualisierung:

    upp5gXZnuj.png



    Danke im Voraus!

  • Ich denke, dass du auch noch bei den jeweiligen Domains den Root-Pfad anpassen musst. Sonst ist‘s klar, dass der Browser im falschen Ordner sucht: https://www.netcup-wiki.de/wik…entenstamm_.C3.A4ndern.3F

    Danke erst einmal für deinen Tipp. Den Dokumentenstamm habe ich für alle Domains bereits angepasst und auch sichergestellt, dass diese auf den entsprechenden Ordner verweisen. Füge ich eine andere index.html-Datei ein, dann wird auch der Inhalt auf der Seite angezeigt. Korrigiere mich, wenn es nicht das ist, was du meinst.

  • Ich habe in einem der Domain-Ordner einen Ordner mit dem Namen images erstellt. Pfad wäre dann ja /sites/Domain1/images/NameDesBildes, richtig?

    nein. der pfad wäre "/images/NameDesBildes", weil dein webroot in "/sites/Domain1" liegt.

    solange alles auf dem selben server liegt, reicht ebenfalls die kurze variante -> <link rel="shortcut icon" href="/images/favicon.ico">

    »Hauptsache BogoMIPS!«

    Fleischfresser

  • Hi Domvnxk und Willkommen :)


    Zunächst einmal: sehr saubere und strukturierte Problemschilderung, gefällt mir.


    Grundlegend sieht dein Konzept meiner Meinung nach auch völlig in Ordnung aus - handhabe ich in etwa genauso.

    Beachte bitte, dass Linux zwischen Groß- und Kleinschreibung unterscheidet, ggf. hat sich da irgendwo ein Fehler in der Config eingeschlichen:

    /sites/Domain1

    vs

    /sites/domain1/images

    Daher mal überprüfen, ob sämtliche Pfade optimalerweise klein geschrieben sind.


    Auch hilft es, sich eine PHP-Datei anzulegen mit dem Inhalt <?php phpinfo(); ?>, um mit der Ausgabe alle Pfade auf Korrektheit überprüfen zu können.


    _


    Auch habe ich versucht auf den /sites/domain1/images Ordner über das Web zuzugreifen. Wenn ich htttps//:domain1.de/images eingebe bekomme ich einen 403-Fehler, aber wenn ich dann das Bild suche gibt er mir einen 404 Not Found aus. Meine Frage diesbezüglich: Wie funktioniert hier die korrekte Verlinkung im HTML-Code auf den Ordner? Geht das überhaupt so?

    Das ist schon die korrekte Herangehensweise. Greifst du über das Web auf Dateien zu, ist der Dokumentenstamm das Wurzelverzeichnis, alles darüber braucht nicht angegeben werden und ist sowieso für den Webserver im Standard nicht erreichbar. Ist also das DocRoot /sites/domain1/ und du greifst per Web aufhttps://domain1.de/images/ zu, wird auf Dateiebene der Ordner /sites/domain1/images/ aufgerufen. Ein 403 Forbidden wird hier oft geliefert, wenn keine passende index-Datei gefunden wird und Directory Listing deaktiviert ist (das ist default auch aus Sicherheitsgründen der Fall). Aber der Aufruf im Browser von https://domain1.de/images/existierendesbild.png müsste in dem Fall sauber funktionieren und das Bild ausliefern. Wenn dies nicht der Fall ist, sollte man die Pfade nochmal genau auf Tippfehler oder Groß-/Kleinschreibung kontrollieren.


    Weitere Idee: wurden die Domains erst friosch zu Netcup umgezogen und waren vorher bereits woanders in Betrieb? Dann könnte ggf. doch irgendwo noch ein Cache im Weg sein. Hier bietet sich an den Router neuzustarten, am Client den DNS-Cache zu löschen (Windows: ipconfig /flushdns) und im browser private Tabs zum Testen zu verwenden. Alternativ könnte man im Client auch andere DNS-Server angeben, beispielsweise 8.8.8.8 von Google - nutze ich wegen der Datensammelei aber maximal für kurze Tests.

    Du könntest auch die Domain mal nennen (hier im Beitrag oder per PM) und dann könnten andere mal gegenprüfen.


    Ansonsten noch ein Detail, aber nicht für das Problem verantwortlich:

    <link rel="shortcut icon" href="https://domain1.de/images/name.png">

    Hier würde ich empfehlen das Protokoll gänzlich wegzulassen, dann verwendet der Client das ohnehin beim Aufruf genutzte Protokoll, meistens ja https.

    Absolute Pfadangabe, unabhängig von der verlinkenden Datei:

    <link rel="shortcut icon" href="/images/name.png">

    bzw als relative Pfadangabe ausgehend von der aktuellen Datei:

    <link rel="shortcut icon" href="images/name.png">

    Lässt man nämlich mal versehentlich das s weg und verlinkt http://domain1.de/images/name.png, meckert der Browser sofort, dass nicht alle Elemente der Webseite auf sicherem Wege übertragen worden sind, obwohl die Webseite via https aufgerufen wurde. Aber dies nur als Randbemerkung.

  • Ich habe diesen Forenbeitrag leider schon geschlossen, das Problem war kurzzeitig weg und dann trat es wieder auf, hier aber dann noch ein kleiner Nachtrag:

    nein. der pfad wäre "/images/NameDesBildes", weil dein webroot in "/sites/Domain1" liegt.

    Das habe ich dann auch herausgefunden, es reicht tatsächlich einfach anzugeben, dass das Bild in /images liegt, eine weitere Spezifikation ist nicht nötig.

    Daher mal überprüfen, ob sämtliche Pfade optimalerweise klein geschrieben sind.

    Ich habe nochmal alles auf Rechtschreibung geprüft, auch die Pfade/Dateien etc., testweise habe ich sogar öffentlich zugängliche Links eingefügt. Auch hier bekam ich einen Fehler.

    Absolute Pfadangabe, unabhängig von der verlinkenden Datei:

    <link rel="shortcut icon" href="/images/name.png">

    Ich habe die Pfadangabe dahingehend geändert, ich war nur etwas irritiert durch die vorherigen Beiträge (Verlinkt in meinem Beitrag), weil dort die Bilder über einen Link erreichbar waren, bei mir eben nicht. Diese ganzen Links in html.index waren dann eher Spielereien, um das Problem so eventuell zu lösen.


    Problemlösung sah wie Folgt aus: Es lag tatsächlich doch an den Berechtigungen. Hochgeladen habe ich meine Dateien über SFTP und dort dann nochmal die Berechtigungen überprüft. Ich habe die Ordner-Berechtigungen auf 0755 und die Dateien im Ordner auf 0644 geändert/gesetzt (wird bei neuen Dateien tatsächlich von alleine gemacht), das hat meine Probleme gelöst und die Website wird nun so angezeigt, wie sie auch lokal aussieht.

    Danke für die Tipps und Hilfe(n) in diesem Beitrag! :)