Rolf B: Navigation per include Nur mit Absolutpfad möglich?

Beitrag lesen

Hallo Auge,

oh. Es geht nicht nur um die Serverseite, sondern (auch) um die Clientseite.

Hier ist die grundsätzliche Frage, wieviel Flexibilität man will und wie automatisch das Ganze funktionieren soll.

Im Normalfall hat man eine Webadresse wie https://www.example.org/tiere/fische/index.html, und wenn die Webseite umzieht, dann ändert sich das möglicherweise in https://zoo.example/tiere/fische/index.html

D.h. nur der Hostname ist anders, aber der Webauftritt an sich ist im Root des Webs eingehängt. Dieser Fall ist einfach - man muss ihn bei der Seitenerstellung überhaupt nicht berücksichtigen.

Möchte man aber auch den Betrieb einer Testseite unter einer Adresse wie https://wow.example/test/tiere/wassertiere/fische/index.html unterstützen, wird es schwieriger. Zum einen ist auf einmal ein Basispfad im System, zum anderen wurde eine Ordnerebene eingeschoben.

Hier sollte man zunächst in der .htaccess Datei mit SetEnv den Rootordner in eine Environmentvariable legen (die man im PHP mit getenv abfragen kann), so dass man weiß, in welchem Unterordner von $_SERVER['DOCUMENT_ROOT'] das logische Hauptverzeichnis der Webseite liegt. Alle Scripte müssen dann natürlich ihre Zugriffe darauf beziehen. Ein nav.php kann sich über getEnv den Basispfad holen und ihn einfach allen Navigationslinks voranstellen.

Das ist auf jeden Fall einfacher, als wenn man sich im nav.php $_SERVER['SCRIPT_FILENAME'] anschaut und damit herausfinden will, wie relative Links zu konstruieren sind. Es geht, aber es ist mühsam.

Schwieriger wird es mit Ressourcenzugriffen, die im HTML, in JavaScript oder im CSS stehen. Denn auch die müssen einem solchen Umzug folgen können. Bei HTML kann man das noch mit dem erzeugenden PHP Script in den Griff bekommen. Dagegen sind JavaScript und CSS oftmals statische Ressourcen, die nicht über PHP laufen. Hier muss man sich dringend bemühen, auf absolute Pfadangaben zu verzichten.

Das Einfügen von Ordnerebenen ist und bleibt aber ein Alptraum und ist nur mit hoher Komplexität automatisiert lösbar.

Rolf

--
sumpsi - posui - obstruxi