[Apache] Vhost Fehler Dokumente ausserhalb von httpdocs

Aradiv

Well-known member
ID: 217591
L
20 April 2006
1.683
176
ich möchte bei einem vhost eigene Fehlerdateien anlegen. Soweit auch ein Problem

allerdings möchte ich das diese NICHT direkt per Browser abgerufen werden können.

Ich habe folgende Ordnerstruktur

#Öffentlch zugänglch
httpdocs
#Hier liegen die Fehlerdokumente
error

folgendes steht in der vhost httpd conf
Code:
ServerName www.domain.de
ServerAlias *.domain.de domain.de
SuexecUserGroup user group
AddHandler fcgid-script .php
DocumentRoot "/var/www/vhosts/domain.de/httpdocs/"
<Directory "/var/www/vhosts/domain.de/httpdocs/">
    FCGIWrapper /var/www/vhosts/domain.de/php-fcgi/php-fcgi-starter .php
    Options ExecCGI
</Directory>
ServerSignature Off
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html
ErrorDocument 403 /error/HTTP_FORBIDDEN.html
ErrorDocument 404 /error/HTTP_NOT_FOUND.html
....
jetzt ruft er die Fehlerdateien aber unter httpdocs/error ab in httpdocs sollte aber nach Möglichkeit nur die eigentliche Seite liegen.

eine absolute pfadangabe funktioniert ja leider auch nicht /var/www/vhosts/domain.de/error/

Aradiv

EDIT mit Alias kann ich die Dateien zwar da ablegen aber mit domain/error/HTTP_NOT_FOUND.html kann ich sie trotz alledem abrufen. Und alles was in httpdocs/error liegt ist nicht mehr erreichbar.
...
 
Zuletzt bearbeitet:
Error-Dokumente sind dafür gedacht an den Browser ausgeliefert zu werden, wenn sie das nicht sollen, missbrauchst du die Funktion für irgendetwas anderes, da solltest du dann mal beschreiben, was du machen willst.
 
Ich verstehe das so, dass Aradiv nicht möchte, dass man z.B. https://www.example.com/error/HTTP_NOT_FOUND.html aufrufen kann, sondern die Datei nur benutzt wird, wenn wirklich ein 404er vorliegt.

Genau.
Ich möchte das man in httpdocs jeden Ordnernamen usw nehmen kann also durch die Fehlergeschichten keine Einschränkungen bekommt.
Die einzige Lösung die mir bis jetzt eingefallen ist ist

ErrorDocument 404 "<html><head><title>404 File not Found</title></head><body>Die angeforderte Datei wurde nicht gefunden</body>"

Was aber auch nicht wirklich schön ist
 
Nein.

Die Idee ist folgende:

Der "User" kann sich frei in httpdocs austoben er soll dort so wenig Beschränkungen wie möglich haben. Bei einem Fehler soll aber nicht die Standardseite vom Apache kommen sondern eben angepasste Seiten.

Bei einem Alias "sperrt" man den entsprechenden Ordnernamen, da heißt beim der Einstellung
Alias "error" "/var/www/vhosts/domain/error"
kann der User danach selbst in httpdocs keinen Ordner error mehr benutzen.

Natürlich könnte ich sowas wie
Alias "asdmadsagfjas" "/var/www/vhosts/domain/error"
machen aber damit löst man das Problem ja nicht wirklich sondern hofft nur das es nie auftritt.

Aradiv
 
Ich hab das in einem ähnlichen Fall mal so gelöst, dass die Error-Docs in einem Ordner namens __$ERROR$__ lagen. Also im Prinzip genau der Ansatz, den du eben hattest, nur mit ein paar Sonderzeichen garniert, so dass die Einschränkung imo vertretbar ist (bei mir durften die User überhaupt keine Sonderzeichen verwenden).
Die Alternative wäre ein Frontcontroller, zu dem alle Requests weitergeleitet werden. Der kann dann entscheiden, ob /error/ aufgerufen wurde oder ob tatsächlich ein Fehler vorliegt (und kann dann auch auf Dokumente außerhalb der htdocs zugreifen).