Über mich

Startseite arrow Tipps & Tricks arrow Absolute oder relative Pfade verwenden?

Absolute oder relative Pfade verwenden?

Freitag, 29. August 2008
Geschrieben von Armin Vieweg
Es gibt bestimmt manche die sich diese Frage schon gestellt haben. Hier versuche ich eine Antwort darauf und auf die Frage wo dort der Unterschied ist, zu geben.

Pfade verwendet man in Dateisystemen um die Dateien übersichtlicher für den Benutzer zu lagern. Jeder Heimanwender kennt dieses Prinzip und nutzt es täglich. Dabei ist der eigenen Organisation keine Grenzen gesetzt.

Im Webdesign werden auch Verzeichnisse genutzt. Bilder kommen in den einen Ordner, Stylesheets in den Anderen, usw.

Hier mal eine Beispiel-Hierarchie:

root
\_ images
    \_ bild1.jpg
    \_ bild2.jpg
    \_ bild3.jpg
|
\_ styles
    \_ print.css
    \_ style.css
|
\_ html
    \_ index.html
    \_ impressum.html





Wollen wir jetzt in unserer Website ein Bild verlinken müssen wir den Pfad zu dem Bild angeben.
Dabei gibt es zwei verschiedene Möglichkeiten:

relativ

src="../images/bild.jpg"



absolut

src="/images/bild.jpg"



Die beiden Varianten unterscheiden sich in diesem Beispiel nur durch zwei Pünktchen. Der Hintergrund ist jedoch etwas komplexer.

Die beiden Pünktchen im relativen Link bedeuten: "gehe ein Verzeichnis hinauf". Also wir befinden uns in der index.html Datei, darin wird das Bild verlinkt. Die index.html liegt im html-Verzeichnis. Durch die zwei Pünktchen gehen wir jetzt eine Ebene hinauf - also ins root. Von da geht es dann weiter zum Images-Ordner in dem unser Bild liegt.

Bei der absoluten Angabe haben wir keine Punkte sondern einen führendes Slash (/). Das sagt uns, dass es sich hierbei um einen absoluten Link handelt. Er geht immer vom obersten, verfügbaren Verzeichnis aus. Dieses Slash symbolisiert also unser Root-Verzeichnis. Bei Internetseiten handelt es sich dabei um die Domain. Steht in einem Link also "/bild.jpg" dann weiß man, dass dieses Bild unter www.domain.de/bild.jpg erreichbar sein muss.


Wann verwende ich was?

Im Prinzip ganz einfach. Wenn sich alle HTML-Dateien der Internetseite auf der gleichen Ordner-Ebene befinden, können relative Pfadangaben ohne Probleme benutzt werden. Folgende Hierarchie dient uns als Beispiel:

root
\_ produkte
    \_ index.html
    \_ produkt1.html
|
\_ service
    \_ index.html
    \_ treiber.html
|
\_ kontakt
    \_ impressum.html
    \_ index.html



In diesem Beispiel befinden sich alle HTML-Dateien auf der gleichen Ebene. Innerhalb eines Unterverzeichnisses von Root. Wenn ich darin ein Bild verlinke mit zwei Punkten ("gehe ein Verzeichnis hinauf") lande ich immer im Root-Verzeichnis selbst.

Habe ich aber folgende Struktur wird es problematisch:

root
\_ produkte
    \_ index.html
    |
    \_ kategorie1
        \_ produkt_a.html


Die index.html landet mit zwei Punkten im Root. Die produkt_a.html jedoch nicht. Dort gelangt man mit zwei Punkten in das Verzeichnis "produkte". Und darin befindet sich ja nicht unser Bilder-Ordner.



Relative Pfadangaben können also genutzt werden wenn die Relation zwischen Bild und Datei immer gleich ist. Häufig ist das bei CMS-Systemen der Fall, die Pfade generieren wie z .B. index.php?startseite.

Für den Browser befindet man sich immer in der Datei index.php, die im Root-Verzeichnis liegt und so sind die Pfade zu den Bildern immer gleich - auch wenn die Inhalte selbst ganz woanders herkommen.


Benutzt man von Anfang an absolute Pfadangaben kann einem so etwas nicht passieren. Der Nachteil daran ist jedoch, dass die Pfade dann auch gerne mal etwas länger werden können.

Damit die Internetseite übersichtlicher ist empfehle ich persönlich eher absolute Pfade.

Dieses Prinzip gibt es übrigens nicht nur in HTML-Dateien sondern auch in CSS-Dateien - wenn also mal dort ein Background-Image definiert werden soll.



  Kommentare (7)
 1 Geschrieben von: DeMoehn, am 29.08.2008 um 17:22
Hey, da bedanke ich mich doch gleich mal für diese Information. 
 
Ich arbeite jetzt schon so lange mit HTML und dachte immer es ist erst ein absoluter Pfad wenn ich mit \"Http://meineSeite[...]\" anfange. 
Wozu der \"/\" am Anfang dient wusste ich also gar nicht. 
 
Mal wieder was dazu gelernt. 
Merci
 2 Geschrieben von: Gast, am 31.07.2011 um 16:01
Ist jetzt wohl ein Scherz?? 
 
Sowohl ../ als auch / ist relativ.... 
 
erst http://www.link.de/bild.jpg macht es zu einem Absoluten Pfad
 3 Geschrieben von: Armin, am 31.07.2011 um 21:32
lol 
relativ heißt, vom gegenwärtigen Standpunkt ausgehen.  
../ heißt einen Ordner rauf gehen, von dort wo ich mich gerade befinde (relativ) 
/ heißt egal wo ich bin immer vorne anfangen (absolut).
 4 Geschrieben von: Frank ... auch Gast! :), am 10.11.2011 um 16:37
Hallo Armin, 
 
Ich wäre mit einem oll etwas vorsichtiger! 
 
../ relativ heißt vom gegenwärtigen Standpunkt aus ... ok. 
/ ist absolut ... aber relativ zur Basis URL und innerhalb eines Webprojekts. 
http://www.irgendwas oder C: ... sind rein absolute Angaben ... unabhängig vom Standpunkt oder Basis-URL. 
 
Wenn schon, dann bitte ... und nicht mal schnell rum"lol"en! 
Damit zeigt man sehr schnell die eigenen Unwissenheit bzw. die Unfähigkeit die Zusammenhänge für Einsteiger brauchbar zu erklären. 
 
Grüße 
 
Frank
 5 Geschrieben von: Armin Vieweg, am 10.11.2011 um 19:51
Hallo Frank, 
ich glaube Du überbewertest das "lol" ein bisschen. Es war auf den Satz mit dem Scherz bezogen. Ebenso wenig glaube ich, dass ein "lol" irgendwas über irgendwelche Kompetenzen aussagt. 
 
Außerdem beharre ich weiterhin auf die Richtigkeit des Satzes "/ heißt egal wo ich bin immer vorne anfangen". Das man "vorne" anders definieren kann (z.B. über die Basis-URL), ist gar nicht Bestandteil dieses Artikels. 
 
Also ganz cool bleiben :D 
Gruß 
Armin
 6 Geschrieben von: Tim, am 10.11.2011 um 22:29
Auf Dateisystemebene ist es sicherlich richtig, dass ein absoluter Pfad im Serverroot begint, z.B. /srv/www/htdocs/test.html - allerdings gehen wir bei HTML-Pfaden von der Sichtweise des Apache-Servers und dessen Webroot aus, daher ist ein "/test.html" aus meiner Sicht in diesem Fall durchaus als absoluter Pfad zu bezeichnen. Man kann nun allerdings drüber streiten, ob hier nun auch Protokoll und Domain angegeben werden müssen ;)
 7 Geschrieben von: Tom, am 02.01.2012 um 08:08
Mit relativen Pfadangaben relativ zum Basis-URI referenzieren: 
 
./ oder ../ 
 
Mit absoluten Pfadangaben relativ zum Basis-URI referenzieren: 
 
/ oder ganz ohne und nur pfad/datei
Letzte Aktualisierung ( Montag, 15. September 2008 )
 
< Zurück   Weiter >