Am 1. Februar 2009 12:58 schrieb Manfred Rebentisch <mrebenti...@comparat.de>:
> Der Apache schaut per Default nach, ob ein Verzeichnis oder eine Datei (v.a.
> DirectoryIndex) existiert.

Ja, allerdings macht er beim Feststellen ob es eine Datei oder ein
Verzeichnis ist (r->finfo.[...]), zunächst noch nichts (core
map_to_storage hook). Sollte ein Handler per SetHandler zugewiesen
sein, so wird mod_dir unter Apache 2.0 und 2.2 (anders 1.3 und derzeit
trunk) auch bei Verzeichnisaufrufen nicht nach Index-Dokumenten
suchen.

> Andernfalls erscheint im Log:
>
>  File does not exist: /var/www/gemuese/gruenkohl

Das kommt vom default_handler. Der läuft immer dann, wenn kein anderer
Handler zugewiesen wurde (werden konnte).

> (Hier ist /var/www/gemuese das DocumentRoot Verzeichnis und "gruenkohl" das
> nicht existierende Verzeichnis.

Forderst du '/gruenkohl/foo.html' an, '/var/www/gemuese/gruenkohl/'
existiert nicht als Verzeichnis, dann ist '/foo.html' path-info. Setzt
du nunmehr einen Handler über 'AddHandler foo-handler html', wird
dieser nicht zugewiesen, da path-info unberücksichtigt bleibt und das
letzte als Datei behandelte Segment 'gruenkohl' keine Dateiendung
'html' besitzt. Das ist über die Direktive 'ModMimeUsePathInfo' in
Apache 2.x konfigurierbar. Setzt du den Handler über SetHandler,
besteht dieses Problem nicht (Vers. 1.3.x könnte sich anders
verhalten, kA.).

> Ich bräuchte das DocumentRoot fast garnicht, da der Handler alle Requests
> behandeln könnte.

Warum baust du dann keinen kleinen

- translate_name-hook, welcher r->uri auf r->filename kopiert
- map_to_storage-hook, welcher den directory_ und file_walk umschifft
(also OK zurückgibt, ohne etwas zu tun; sollen kontextlose Anfragen
wie TRACE berücksichtigt werden, so müsste das hier erfolgen)

Damit hättest du das Dateisystem quasi "abgestellt", da alles nur noch
URL-path basiert läuft. <directory> und <files>-Abschnitte und
.htaccess-Dateien werden dann natürlich auch nicht mehr verarbeitet,
d.h. du müsstst auf <location> ausweichen. Alles, was
dateisystembasiert ist (DirectoryIndex, trailing slash bei
Verzeichnissen, mod_autoindex etc.) funktioniert dann natürlich auch
nicht mehr; das müsste dein Handler dann berücksichtigen, den du dann
am besten per SetHandler involvierst.

Bob

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de"
      unsubscribe-Anfragen an users-de-unsubscr...@httpd.apache.org
           sonstige Anfragen an users-de-h...@httpd.apache.org
--------------------------------------------------------------------------

Antwort per Email an