Antwort #26 am: 14. Januar 2011, 14:17:12
Ich bin nur nach dem gegangen was als Link im ersten Post steht. Das Problem hierbei ist nicht PHP sondern die Browser. Beispielsweise steht im Seitenquelltext
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
Der Link lautet
"http://www.shop.de/admin/configuration.php/login". Apache hört bei configuration.php auf tiefer in die Verzeichnisse zu gehen. Der Browser jedoch glaubt er sei im Verzeichnis configuration.php und würde da eine Datei namens login aufrufen. Die CSS vom Beispiel wird demnach nicht relativ zum Verzeichnis
admin geladen, sondern relativ zum Verzeichnis
configuration.php. Das bedeutet, diese CSS wird vom Browser über den Link
"http://www.shop.de/admin/configuration.php/includes/stylesheet.css" abgerufen. Apache liefert hier wieder die Ausgabe von configuration.php welches natürlich keinen gültigen CSS beinhaltet (gleiches gilt für alle anderen relativen Links zu JS, Grafiken, usw.). Dies führt dazu das die Seite ohne Styles, Grafiken und JavaScripts angezeigt wird.
Achja.. warum ich erst prüfe ob es keinen QUERY_STRING gibt. Sobald nach configuration.php ein ? folgt ist das was danach kommt nicht mehr relevant für das Problem, denn dann weiß selbst der Browser das mögliche Slashes nicht bedeuten, das man tiefer im Verzeichnis geht, sondern dies zu einer Queryvariable gehört. Kann man eigentlich auch weglassen, da die if danach sowieso prüft ob beim Aufruf nach .php ein / folgt, aber doppelt gemoppelt hält besser.