absolute vs. relative Pfade bei Verweisen
Andreas Berkl
- html
Hallo zusammen,
mir stellt sich gerade folgende Frage: Handle ich mir irgendwelche Nachteile ein, wenn ich in einem Projekt mit absoluten statt relativen Pfadangaben arbeite?
Hintergrund: Ich möchte z.B. Stylesheets, JavaScripts oder auch Grafiken, die ich IMMER auf ALLEN meinen Seiten verwende, möglichst einfach referenzieren, also grob folgende Struktur einer fiktiven Webseite www.domain.de:
styles formate.css
scripts funktionen.js
images logo.gif
...
pages diverse Unterverzeichnisse mit ihrerseits
... unbestimmter, variabler Tiefe
Wenn ich nun eine bestimmte Seite in einem fiktiven Pfad /pages/infos/manuals/ habe, muß ich bei relativen Pfaden z.B. für die Stylesheets ../../../styles/formate.css angeben, d.h. je nach Tiefe des Unterverzeichnisses habe ich unterschiedliche relative Pfade (logisch).
Wenn ich nun allerdings als Adresse http://www.domain.de/styles/formate.css angebe, muß ich mir keine Gedanken mehr über den realtiven Pfad der Seite machen.
Ein Wechsel des Domainnamens steht übrigens nicht zu erwarten, d.h. absolute Pfade sind unter diesem Gesichtspunkt kein Problem.
Lege ich mir da ein Ei oder handle ich mir irgendwelche anderen Probleme ein? Funktionieren tut´s jedenfalls.
Gruß, Andreas
Hallo Andreas,
der wohl größte Nachteil wird das loakle Arbeiten an der Seite. Auch dort wird die Seite immer nach der Referenz mit Pfad im Netz suchen, d.h. Du wirst Deine Seite offline kaum mehr entwickeln/pflegen können.
Falls Dir PHP zur Verfügung steht könntest Du eine Variable $pfad am Anfang aller Dateien festlegen und jeweils in die URL einfügen lassen. Dann musst Du zumindest den Pfad pro Datei nur einmal anpassen.
Grüße aus Würzburg
Julian
Hoi,
mir stellt sich gerade folgende Frage: Handle ich mir
irgendwelche Nachteile ein, wenn ich in einem Projekt mit
absoluten statt relativen Pfadangaben arbeite?
Der Sinn von relativ referenzierten Angaben ist der, dass man die
Umgebung leicht portieren kann. Will heissen, dass es offline genau
so laeuft wie online -- trotz einer grundsaetzlich anderen
Verzeichnis-Struktur. Wenn der Anspruch nicht besteht, dann handelst
du dir auch keine Probleme ein.
Gruesse,
c.j.k
Hallo,
mir stellt sich gerade folgende Frage: Handle ich mir irgendwelche Nachteile ein, wenn ich in einem Projekt mit absoluten statt relativen Pfadangaben arbeite?
Statt voellig absoluten Pfaden wuerde ich in so einem Fall root-relative benutzen. Also <a href="/folder/dings.html">.
Dann macht's auch nix wenn Du's mal auf eine andere Domain verschiebst, bzw. du kannst es dann auch offline (natuerlich nur falls Du einen Server laufen hast) testen.
Gruss, Mel
Hi Andreas,
was hältst du von - huhu, CK :) - http://forum.de.selfhtml.org/archiv/2002/4/8986/#m49681? Das Einsetzen der Adressbasis funktioniert natürlich auch mit jeder anderen serverseitigen Technik genauso gut.
LG Orlando
Moin!
was hältst du von - huhu, CK :) - http://forum.de.selfhtml.org/archiv/2002/4/8986/#m49681? Das Einsetzen der Adressbasis funktioniert natürlich auch mit jeder anderen serverseitigen Technik genauso gut.
Der Nachteil ist, daß der Server aktiv werden muß. Sowas muß der Webspace natürlich erstmal können.
Und als zweiter Nachteil: Die Entwicklungsumgebung muß auch ein Server sein, sonst funktionieren SSI (oder was auch immer) ebenfalls nicht.
Da bei absoluten Pfadangaben aber ebenfalls ein Server vorhanden sein muß, ist deine Methode kein großer Vorteil, hat aber aufgrund der Verpflichtung, aktive Komponenten zu benutzen, auf dem Webspace sogar einen Nachteil. Und gewisse Dinge (wie z.B. Pfadangaben in CSS-Dateien für Hintergrundbilder) kannst du einfach nicht mit <base href> lösen, wie ich vermuten würde.
- Sven Rautenberg
Hallo,
Da bei absoluten Pfadangaben aber ebenfalls ein Server vorhanden sein muß, ist deine Methode kein großer Vorteil, ...
Aber sicher. Bei absoluter Angabe muß ich es schaffen, dass mein Server intern auch als www.meineDomain.de gefunden wird, manchmal aber unter dieser Domain auch das original erreicht wird. Bei den Skriptsprachen kann meine Testversion auch auf http://meinrechner/meine-domain.de laufen.
Grüße aus Würzburg
Julian
Moin!
Da bei absoluten Pfadangaben aber ebenfalls ein Server vorhanden sein muß, ist deine Methode kein großer Vorteil, ...
Aber sicher. Bei absoluter Angabe muß ich es schaffen, dass mein Server intern auch als www.meineDomain.de gefunden wird, manchmal aber unter dieser Domain auch das original erreicht wird. Bei den Skriptsprachen kann meine Testversion auch auf http://meinrechner/meine-domain.de laufen.
Das hängt davon ab, was du als "absolute Pfadangabe" definierst.
Klar, wenn du "http://die.domain.tld/pfad/zur/datei.htm" angibst, dann ist das a) viel Schreibarbeit und b) kompliziert zu pflegen aus den von dir genannten Gründen.
Diese Angabe würde ich aber eher als "URL" oder "absolute URL-Angabe" bezeichnen.
"Absolute Pfadangaben" sind sowas wie das hier: "/pfad/zur/datei.html". Und da ist es dann egal, wie der Server heißt. Und es ist weniger Tipparbeit. ;) Und es funktioniert prima ohne aktive Komponenten, man handelt sich keine Nachteile ein (wenn man ausschließlich auf einem Server veröffentlicht).
Mit absoluten URL-Angaben würde ich nur externe Links angeben. Ansonsten sind sie praktisch unmöglich zu handhaben und stören nur den Arbeitsfluß.
- Sven Rautenberg
Hallo Sven,
gut, die Argumente zur Auffassung von "absolutem Pfad" sehe ich ein und würde ich i.d.R. auch so sehen. Im Ausgangspostig war aber die Alternative zu relativ "../../../" die Form "http://www.domain.de/styles/formate.css". Und nachdem eine Lösung des Problems viel mehr hilft als ein formuliertes Problem formal zu perfektionieren darf man, denke ich, die exakte Bedeutung nicht so stark werten.
Grüße aus Würzburg
Julian
P.S: Klappen absolute Pfade (die 1:1 übertragbar sind auf den Server) unter Windows? Hab's noch nie ausprobiert.
Hallo Sven,
gut, die Argumente zur Auffassung von "absolutem Pfad" sehe ich ein und würde ich i.d.R. auch so sehen.
Fein. :)
Im Ausgangspostig war aber die Alternative zu relativ "../../../" die Form "http://www.domain.de/styles/formate.css". Und nachdem eine Lösung des Problems viel mehr hilft als ein formuliertes Problem formal zu perfektionieren darf man, denke ich, die exakte Bedeutung nicht so stark werten.
Das Problem ist wohl, daß manchmal einfach vergessen wird, daß es zwischen total-relativ und total-absolut auch noch die Variante server-relativ/pfad-absolut gibt, welche prima funktioniert.
P.S: Klappen absolute Pfade (die 1:1 übertragbar sind auf den Server) unter Windows? Hab's noch nie ausprobiert.
Definiere "unter Windows". Ich habe jedenfalls keinerlei Probleme damit gehabt bislang. Als "kleines Entwicklungssystem" habe ich hier PHP-Triad installiert, welches wunderbar absolute Pfade versteht. Du darfst nur einfach nicht auf die Idee kommen, Backslashes "" zu benutzen, sondern ganz normal Slashes "/". :)
- Sven Rautenberg
Hi, Sven
"Absolute Pfadangaben" sind sowas wie das hier: "/pfad/zur/datei.html".
Ich bevorzuge ebenfalls deine Auslegung, setze daher serverseitig die Basisadresse ein und arbeite dann mit relativ absoluten ;-) Pfaden weiter. Darum geht's mir ja auch letztendlich - die selbe Seite läuft daheim wie beim Hoster mit absoluten Pfaden - ohne jegliche manuelle Anpassung. Ich bevorzuge eben absolute Angaben, denn sobald man von Unterverzeichnis zu Unterverzeichnis linkt, wird's IMHO schnell unübersichtlich. Es ist aber müssig, _darüber_ zu diskutieren, nachdem das Geschmacksache ist.
Und es ist weniger Tipparbeit. ;) Und es funktioniert prima ohne aktive Komponenten, man handelt sich keine Nachteile ein (wenn man ausschließlich auf einem Server veröffentlicht).
Ich würde sagen, mein Vorgehen ist sogar multiservertauglich und aktive Komponenten setze ich ganz frech voraus.
Zu den Stylesheets ist noch zu sagen, dass ich bisher keine Probleme bezüglich der Pfade von Bildern hatte. Problematisch wird die Sache wohl erst bei Verwendung von Subdomains.
Im Moment ist meine Baustelle noch weit davon entfernt, mit Bildern dekoriert zu werden, aber das ist eine andere Geschichte...
LG Orlando
Yo!
"Absolute Pfadangaben" sind sowas wie das hier: "/pfad/zur/datei.html".
Ich bevorzuge ebenfalls deine Auslegung, setze daher serverseitig die Basisadresse ein und arbeite dann mit relativ absoluten ;-) Pfaden weiter.
Und wo ist dann der Unterschied? Ich meine, wenn du ohnehin immer "/pfad/zur/datei.html" angibst, warum dann noch das Gehampel mit <base href>? Funktioniert doch auch ohne.
Darum geht's mir ja auch letztendlich - die selbe Seite läuft daheim wie beim Hoster mit absoluten Pfaden - ohne jegliche manuelle Anpassung. Ich bevorzuge eben absolute Angaben, denn sobald man von Unterverzeichnis zu Unterverzeichnis linkt, wird's IMHO schnell unübersichtlich. Es ist aber müssig, _darüber_ zu diskutieren, nachdem das Geschmacksache ist.
Klar, absolute Pfadangaben sind eine prima Sache. Vor allem, weil man sich so z.B. recht einfach ein Fragment als Menü gestalten kann, welches mit "copy+paste" oder include() überall eingefügt werden kann und linkmäßig immer paßt.
Ich würde sagen, mein Vorgehen ist sogar multiservertauglich und aktive Komponenten setze ich ganz frech voraus.
Definiere "multiservertauglich". :)
Der Nachteil bei deiner Methode: Man kann die Seiten nicht ohne Nachbearbeitung zuhause abspeichern, ohne immer wieder lästige Onlineverbindungen aufbauen zu müssen. Ist eine kleine DAU-Bremse, mehr nicht.
Zu den Stylesheets ist noch zu sagen, dass ich bisher keine Probleme bezüglich der Pfade von Bildern hatte. Problematisch wird die Sache wohl erst bei Verwendung von Subdomains.
Netscape 4 betrachtet Pfadangaben für CSS-Hintergrundbilder relativ zur HTML-Datei, alle normalen Browser betrachten den Pfad relativ zur CSS-Datei (was Sinn macht, denn nur von dort aus ist diese Angabe konstant).
Insofern: Wenn du ohnehin immer absolute Pfadangaben verwendest, wird dir das noch nicht aufgefallen sein. Lösung ist eben, auch in der CSS-Datei entweder garkeinen Pfad anzugeben (und dann reichlich Kopien des Bildes auf dem Server zu verteilen, bzw. alles in einem Verzeichnis zu haben: HTML, CSS und Bild), oder ihn absolut anzugeben.
Ich weiß nicht, ob die <base href>-Angabe darauf irgendeinen Einfluß hat.
- Sven Rautenberg
Yo!
Word up! ;-)
Und wo ist dann der Unterschied? Ich meine, wenn du ohnehin immer "/pfad/zur/datei.html" angibst, warum dann noch das Gehampel mit <base href>? Funktioniert doch auch ohne.
Weil ich auch von einem Unterverzeichnis in ein anderes einen absoluten Pfad haben will und eher "../../" als Gehampel empfinde (das war der Teil mit der Geschmacksache).
Klar, absolute Pfadangaben sind eine prima Sache.
Na, sag ich doch ;-)
Ich würde sagen, mein Vorgehen ist sogar multiservertauglich und aktive Komponenten setze ich ganz frech voraus.
Definiere "multiservertauglich". :)
Gleiche Chancen bei Heim- und Auswärtsspielen :p
Der Nachteil bei deiner Methode: Man kann die Seiten nicht ohne Nachbearbeitung zuhause abspeichern, ohne immer wieder lästige Onlineverbindungen aufbauen zu müssen. Ist eine kleine DAU-Bremse, mehr nicht.
Das ist AFAIK nicht korrekt, weil Browser, wenn sie eine gesamte Seite (inkl. Bilder usw.) abspeichern, auch die Pfade mit umbiegen.
Netscape 4
Bekommt ohnehin ein eigenes Stylesheet, da macht eine vollständige URI-Angabe das Kraut auch nicht mehr fett.
Ich weiß nicht, ob die <base href>-Angabe darauf irgendeinen Einfluß hat.
Habe ich aus obigem Grund noch nicht getestet.
LG Orlando
Hi Sven,
Da bei absoluten Pfadangaben aber ebenfalls ein Server
vorhanden sein muß,
wirklich?
Auch dann, wenn ich die Dateien des Web-Auftritts in das Wurzelverzeichnis eines eigenes Windows-Laufwerks lege?
(-> "subst")
Viele Grüße
Michael