Moin!
Ich hätte vielleicht dazu schreiben sollen, dass ich das ganze unter
Windows teste.
Nein. Kein anderes Betriebssystem verwendet Laufwerksbuchstaben in Pfadnamen.
Ich war davon ausgegangen, dass die Angbabe mit
"/datei.htm", wie bei "DocumentRoot" einfach nur eine absolute
Pfadangabe ist:DocumentRoot C:/folder
... funktioniert. Und es deshalb dementsprechend:ErrorDocument 404 C:/folder/mymissing.htm
... lauten muss.
Das ist eben falsch. Das ErrorDocument ist laut Doku definiert als:
ErrorDocument Fehlercode Dokument
Dokument ist hierbei eben eine lokale Ressource. Die Apache-Doku dazu gibts auch auf Deutsch: http://httpd.apache.org/docs/2.0/mod/core.html#errordocument
Ich habe folgendes ausprobiert:
<VirtualHost *:80>
ServerName sebam.mobile.net
DocumentRoot C:folder
ErrorDocument /error/mymissing.htm
DirectoryIndex index.php
</VirtualHost>Das führte dazu, dass sich der Apache nicht mehr starten liess,
obwohl die Datei dort existierte ;(
Da steht kein Fehlercode vor dem Dokument.
Mit der absoluten Pfad:
C:/folder/mymissing.htm
läuft der Apache wieder, aber das Dokument wird nicht angezeigt.
Wie in der Doku nachzulesen, ist das Dokument relativ zum DOCUMENT_ROOT - oder eine externe URL, auf die umgeleitet wird (was man nicht will, weil dadurch der 404-Status nicht ausgegeben werden kann, da die Umleitung den temporären Redirect mit Status 302 erfordert).
Weiter oben steht etas ist der httpd.conf, dass offenbar für die
Anzeige des ErrorDocuments zuständig ist. Ich kann mir vorstellen,
dass das dafür sorgt, dass die Angabe im <VirtualHost *:80> gar
nicht greift und ich dort etwas ändern muss.
Nein, das ErrorDocument kann in verschiedenen Ebenen geändert werden, global, lokal oder auch per .htaccess im jeweiligen Verzeichnis.
Aber dein Auszug zeigt dir, wie die Direktive zu schreiben ist:
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
Wenn es also auf deinem VHost ein Dokument http://vhost-domain/error/HTTP_NOT_FOUND.html.var gibt (wobei das .var für Content Negotiation zuständig ist - das ist ein ganz anderes Thema und soll nicht weiter verwirren), dann wird dieses für Fehlermeldungen mit Status 404 benutzt.
Vergleiche die URLs, rufe dein Fehlerdokument mal unter seiner URL ab. Wenn da nichts kommt, hast du die falsche URL im ErrorDocument angegeben.
- Sven Rautenberg
"Love your nation - respect the others."