Ähm ... whoops.
Sorry Leute, der Fehler lag nich am Server, sondern an mir.
Ich hab nämlich ned einfach 'n ErrorDoc als .html File erstellt, sondern eine
info.php eingerichtet, die sich um die Fehleranzeige kümmern soll. Die liegt im ROOT. Jetzt hab ich für die ErrorDocs auf meine functions.php mit der
$_GET Variable
errorid (also
functions.php?errorid=404 usw.) verlinkt. Ebenfalls im ROOT. Die Functions sollte bei gesetzter
$_GET['errorid'] dann eine Session mit dem Error festlegen und per
header("Location: info.php") auf die info.php weiterleiten.
Leider war mir dabei nicht klar, dass das bei einem HTTP-Fehler aus 'nem Unterverzeichnis auch auf die
info.php im Unterverzeichnis (wo sie ja gar ned existiert) weitergeleitet wird. Also hab ich den Befehl inner
functions.php auf
header("Location: /info.php") geändert und seitdem funktioniert alles einwandfrei und ich werd bei allen Errors aus sämtlichen Unterverzeichnissen auf die info.php weitergeleitet, wo mir dank erneuter SessionAbfrage die jeweils korrekte ErrorMessage angezeigt wird.
In conclusion: Ich hab mich schrecklich geirrt. Ein '/' ist für den Apache-Server sehr wahrscheinlich immer der Verweis auf's DOCUMENT_ROOT und damit eine absolute Verlinkung.
PS: Warum hab ich bei meinen PHP-Scripts nicht einfach für jede error page ein eigenes File erstellt? Zu chaotisch. Warum hab ich nicht einfach direkt per info.php?errorid=404 auf die Datei und die dazugehörigen ErrorDisplays verwiesen? Ihhh, dann sieht man ja die $_GET Variable in der Adresszeile des Browsers und könnt ihr auch nicht-zugelassene Einträge mitgeben, nur um meine Skripte zu testen. Mit sessions ist's da viel gemütlicher. Die übergeben nur Variablen, wenn sie's auch sollen und nicht, wenn der User selbst eine setzen will.
Trotzdem nochmal vielen Dank euch dreien, EEB, klaus und surfer.
~f
