XaraX: includes und .htacess - UPDATE

Beitrag lesen

Hallo Flo,

anfangs habe ich an eine Unmöglichkeit geglaubt, die Du hier beschreibst, aber nun ist mir klar, was da vorsich geht. Hierbei hast Du verschiedene Dinge mit einander kombiniert, die an sich schon nicht ganz einfach sind.

Include() und artverwandte Funktionen binden Resourcen vor dem Parsen in einen Quellcode. Dabei ist dem Parser egal welcher Art die Eingebundenen Daten sind. Per Default geht er davon aus, es handelt sich um nicht zu parsenden Text. Erst wenn er auf einen öffnenden Tag  (idR: <? oder <?php) trifft, wird der eingebundene Text als PHP-Quellcode interpretiert.

PHP bringt eine Vielzahl von wrappern mit, die das Einbinden einer Vielzahl verschiedenster Resourcen zuläßt. Durch include('http://www.HOMEPAGE.de/header.html') wird eine wrapper für das HTT-Protokoll aktiviert, um an den Host "www.HOMEPAGE.de" eine Anfrage nach der Datei "/header.html" zu starten. (Im Prinzip nichts anderes, als würde ein Unser mit einem Browser http://www.HOMEPAGE.de/header.html aufsuchen.) Das eigentlich wichtige zum Verständnis dieses Vorgangs ist zu bemerkten, daß der Bezug anders als bei include('./header.html') über einen Webserver abgewickelt wird, und nicht über das Dateisystem.

Ein Webserver, der eine Anfrage nach einer Datei "/header.html" entgegennimmt, wird diese nach seiner Konfiguration ausliefern. Dazu prüft er welche möglichen Handler und Filter auf ein bestimmtes Dateiformat Anwendung finden sollen und setzt sie vor der Auslieferung ein. In Deinem Falle ist der Webserver so Konfiguriert, daß er Anfragen an das Dateiformat (ausgezeichnet durch die Dateiendungen .htm und .html) text/html wie application/x-httpd-php zu behandeln hat. Er wird also vor der Auslieferung die Datei "/header.html" von PHP interpretieren lassen.

Dieser Vorgang wird völlig separat zu Deinem Script mit der include-Anweisung ausgeführt. Daher werder die gesetzten Variablen, Konstanten, Dergleichen nicht in die Ausführung Deines Scripts mit einbezogen werden können, sondern alles, was Du tust, ist ein unnötiger, performacelastiger Bezug der Quelldatei "/header.html" über einen Webserver. Ändere Deine 400 Einzelscripte allesamt um und notiere in ihnen include("header.html") und include("footer.html"). Sollten diese besagten Einzelscripte in Strukturen von Unterordnern gestreut sein, wirst Du absolute Angaben zu den einzubindenden Datein benötigen.

Notiere in die Datein "header.html" und "footer.html" als erste Zeile jeweils:

<?php echo $_SERVER["PATH_TRANSLATED"]; exit; ?>

Rufe sie mit Deinem Browser auf. Damit hast Du den absoluten Pfad zu den Datein im Dateisystem, den Du in die Einzelscripte einfügen kannst.

Gruß aus Berlin!
eddi