• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bild auf jeder Seite aus nav anzeigen → Pfad Problem

hannover96xd

Mitglied
Moin,

Ich habe für alle Seiten meiner Website, mit "include", die navigation eingebunden. In der Navigation ist auch ein Bild, so eingebunden:
HTML:
<img src="blog/images/layout_my_logo.png" />
Wenn ich nun aber, z.B. die Datei xy.php, aus dem Ordner "blog" öffne, wird das Bild logischerweise nicht angezeigt, weil in der navigation (die included ist), der Pfad aus der Sicht des root Verzeichnises angegeben ist.

Wie kann man dieses Problem lösen? Ich habe schon Dr. Google gefragt, aber ich habe keinen gefunden, der das gleiche Problem hat, bzw. hatte.


l.g. & danke für eure Hilfe!

hannover96xd



EDIT////
Mit absoluten Pfaden möchte ich nicht arbeiten ;)
 
Werbung:
Danke für die schnelle Antwort :)
Aber dieses "base" ist doch ein absoluter Pfad, oder habe ich da etwas falsch verstanden? :confused:
...vorausgesetzt Du hast einen Apache-basierten Webserver mit aktiviertem mod_rewrite.

Was ist denn mod-rewrite?o_O Noch nie was von gehört. Google spuckt was mit Suchmaschinenoptimierung und url manipulation aus, kannst du das bitte nochmal erläutern? So richtig verstehe ich das nicht...

Was es auch immer ist, mein Webserver unterstützt es.
 
Zuletzt bearbeitet:
Werbung:
Im base-Element kannst Du auch einfach nur ein / als Wert eintragen, der Browser nimmt das dann beim referezieren automatisch als allen URLs vorangestellten Wert.

Ja, mit mod_rewrite kann man viele SEO-Sachen machen - aber auch solche Requests korrekt weiterleiten. Du könntest z.B. pauschal alle URLs die aufgerufen werden auf bild.jpg prüfen (also ob das Name darin steht) und wenn ja, dann leitest Du automatisch zum korrekten (absoluten) Pfad weiter. Ungetestetes Beispiel:

Code:
RewriteEngine On
RewriteRule bild.jpg /blog/images/layout_my_logo.png [L]
 
Vielen Dank!

Eine Frage noch:
Wenn man das mit Bildern machen kann, dann wird das wohl auch mit .html oder .php Dateien funktionieren, oder?
 
Werbung:
Was hindert dich daran, das einfach mal auszuprobieren?

Ich habe gerade noch von meinem Handy aus geschrieben ;)
Nun sitze ich an einem PC und kann es ausprobieren, wobei es nicht klappt.

Bei mir sieht es so aus:
Code:
RewriteEngine On
RewriteRule  layout_my_logo.png /images/layout_my_logo.png [L]

Die Probleme:
1. Zeigt er das Bild nicht an

2. Wenn ich nun das Logo online angucken will, dann sagt mir der Browser:
Code:
Diese Webseite weist eine Weiterleitung auf.
Ohne die .htaccess - Datei zeigt er das Logo jedoch problemlos an.

So habe ich das auch schon einmal ausprobiert:
Code:
RewriteEngine On
RewriteRule  layout_my_logo.png http://multicultipage.bplaced.net/images/layout_my_logo.png [L]
...ohne Erfolg...was mache ich falsch?


l.g. und danke :)
 
mod_rewrite ist hier keine gute Lösung.

Der tiefere Sinn wird sich dir dann erschließen, wenn du mit Frameworks arbeitest, welche Bilder und Scripte über eine Asset-Pipeline aufrufen und Routen für Unterseiten (Views) besitzen.

Gewöhne dir lieber an, Pfade von der Document Root aus zu referenzieren, und Unterseiten nicht in Unterverzeichnissen abzulegen.
 
Werbung:
Meinst du, dass ich alle Seiten in dem root-Ordner ablegen soll? Ich fände das viel zu unübersichtlich

Weil du deine Seiten noch statisch erstellst. Du wirst später mit Frameworks konfrontiert, welche die zum Aufbau einer Seite notwendigen Informationen aus Konfigurationsdateien beziehen. Eventuelle Umleitungen per .htaccess laufen nicht unter dem Radar dieser Configs.

Wenn du etwas verbessern willst, besorg dir erst mal eigenen Webspace. Eine Subdomain auf bplaced ist keine vernünftige Lösung.
 
Werbung:
Ich meinte in diesem Fall MVC Frameworks, aber du wirst bereits bei Sass/Compass darüber stolpern, in der config.rb den Bilderordner zu definieren, um den Image-Helper verwenden zu können. Sass solltest du dir übrigens ansehen, so wie du die Grundlagen von CSS beherrschst.
 
Werbung:
Hallo

am sinnvollsten wäre es, wenn du deine Seite mit einer sinnvollen Ordnerstruktur aufbauen würdest. Dann wären die relativen Pfadangaben zum Bild immer gleich und das Problem gelöst.

Wie sieht deine Ordnerstruktur denn überhaupt aktuell aus?

Aber dann muss ich ja wieder absolute Pfade benutzen, das will ich ja nicht!

Es ist immer ein Risiko wenn jemand einfach Schlagworte in die Diskussion einbringt ohne sie zu erläutern, aber ich verstehe Tronjers Vorschlag

Gewöhne dir lieber an, Pfade von der Document Root aus zu referenzieren,

anders und nicht als absolute Pfadangabe.

Eine absolute Pfadangabe ist für mich zum Beispiel


Alle Pfadangaben, bei denen


entfällt sind relative Pfadangaben.

Wenn sich deine html-Seite im root-Verzeichnis befindet kannst du das Bild mit

images/jpg/bild.jpg

einbinden.

Wenn sich deine html-Seite in einem Unterverzeichnis befindet mit

../images/jpg/bild.jpg

Wenn sich deine html-Seite in einem Unter-Unterverzeichnis befindet mit

../../images/jpg/bild.jpg

Dein Problem ist wohl, das sich mangels einer durchdachten Orderstruktur deine html-Dateien in verschiedenen Verzeichnisebenen befinden.

Tronjers Vorschlag verstehe ich so, das du die Pfadangabe mit einem Slash "/" beginnst, also

/images/jpg/bild.jpg

Damit beginnt die Pfadangabe zum Bild immer im Hauptverzeichnis, egal in welcher Unterverzeichnisebene sich die html-Datei befindet.

Das ist auch eine relative und keine absolute Pfadangabe.

Irgendwie habe ich in gaaaaanz schwacher Erinnerung, das vor Urzeiten einige Webserver oder Webbrowser solche Pfadangaben beginnend mit dem Slash nicht unterstützt haben. Mir ist nicht bekannt, ob diese Probleme immer noch auftauchen. Das musst du einfach mal auf deinem Webspace mit den üblichen Browsern ausprobieren.

Vorschläge, das Problem mit SASS oder Frameworks zu lösen halte ich für oversized.

Gruss

MrMurphy
 
Zuletzt bearbeitet:
Danke für deine lange und ausführliche Antwort :)

Und nochmal zu diesem Schlagwort. Ich will keine absoluten Pfade haben, weil ich höchst, bzw. seht wahrscheinlich den Webserver von einem free hoster zu einem kostenpflichtigen wechseln werde.

L. G. Und schöne grüße aus der Türkei

hannover96xd

Edit///
Wenn ich wieder at Home bin kann ich ein bisschen mehr dazu schreiben.
 
Werbung:
Hallo

Vorschläge, das Problem mit SASS oder Frameworks zu lösen halte ich für oversized.
MrMurphy

Das bezog sich auch nur auf die Sache mit dem mod_rewrite.

Zur täglichen Praxis eines Entwicklers gehört es, Code zu refakturieren, den jemand geschrieben hat, der für Rückfragen nicht mehr zur Verfügung steht. Da ist es dann ungemein hilfreich, wenn der Betreffende geltende Konventionen eingehalten hat.

Bilder stehen häufig nicht mehr hardcoded im HTML, sondern werden per Image-Helper ausgegeben, der das Bild aus einer Datenbankabfrage und den Pfad aus einer Konfigurationsdatei bezieht. Das Wissen um diese Konvention hilft auch dann weiter, wenn man das entsprechende Framework nicht kennt. Im Zweifelsfall findet sich immer eine Antwort bei Stackoverflow.
 
Und nochmal zu diesem Schlagwort. Ich will keine absoluten Pfade haben, weil ich höchst, bzw. seht wahrscheinlich den Webserver von einem free hoster zu einem kostenpflichtigen wechseln werde.

Das ist kein Grund auf absolute Pfade zu verzichten. Ideal wäre dafür der zuletzt genannte Vorschlag:

Code:
/images/jpg/bild.jpg
 
Zurück
Oben