httpd-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bob Ionescu <bobsie...@googlemail.com>
Subject Re: Verzeichnisse, Pfade in der URL
Date Mon, 02 Feb 2009 19:27:40 GMT
Am 2. Februar 2009 18:07 schrieb Manfred Rebentisch <MRebentisch@comparat.de>:
> Hallo Bob,
>
> ich sehe, dass Deine Hinweise für mich zu einer perfekten Lösung führen
> können. Aber da SetHandler einiges verändert, wie Du richtig anmerkst, ist
> das eine aufwendigere Programmierung. Ich möchte dazu noch in den
> Apache-Sourcen schauen, welche Funktionen ich heranziehen kann, damit ich
> nicht alles selber machen muß.

Was soll denn alles nicht von deinem Handler behandelt werden? mod_dir
scheidet mit DirectoryIndex und dem trailing slash ja sowieso schon
einmal aus, da die angeforderten Ressourcen nicht im Dateisystem
existieren und mod_dir auf deren Existenz prüft. Wenn nur
/foo/bar.html an deinen Handler durchgereicht werden soll, dann kannst
du auch AddHandler weiterverwenden. Es bleibt natürlich noch der "root
request", also '/', der von AddHandler so erst einmal nicht erfasst
werden würde (vielmehr würde mod_dir nach Index-Dokumenten suchen;
solange du keine dummy index.html platzierst, der dann wiederum dein
Handler im subrequest lookup zugewiesen werden würde, wird das ja
fruchtlos sein). Der müsste/sollte ja sicherlich auch bei deinem
Handler landen. Wenn das kein Hook deines Moduls erledigen soll, so
kann das mod_rewrite in der httpd.conf übernehmen:

RewriteEngine on
   # endet auf .html oder nur /
RewriteRule \.html$|^/$ - [H=foo-handler,L]

Der Hook von mod_rewrite, der den Handler setzt, läuft in der
Fixup-Phase am Ende (APR_HOOK_LAST), sodass AddHandler von mod_mime
(type_checker-Phase vor den Fixups) oder SetHandler vom Core (Fixup
APR_HOOK_REALLY_FIRST) überschrieben werden.

Alles, was nicht erfasst wird, würde dann mangels Zuweisung beim
core-Handler landen, der einen Fehler serviert.

> Fürs erste versuche ich, das Verfahren mit Hilfe von PATH_INFO zu ändern, also
> eine URL "www.domain.com/gemuese.html/gruenkohl/geschichte" zu verwenden.

Oder du nutzt eben die Direktive ModMimeUsePathInfo on, damit mod_mime
beim Processing von 'Addhandler foo-handler html' statt
/var/www/foo nun /var/www/foo/path/info.html berücksichtigt und in
diesem Fall den Handler zuweist.

> Das ist ganz einfach umzusetzen und damit vielleicht überhaupt besser?

Besser wäre es wohl den überflüssigen directory_walk loszuwerden (da
uns das Dateisystem ja hier egal ist - btw: Grafiken etc. serviert ein
anderer Server?) und damit path-info überhaupt nicht entstehen zu
lassen (path-info = nicht konsumierter Teil des r->filename). Für den
Normaluser ist .html mit path-info ungewohnt (da eben standardmäßig
vom core-Handler abgewiesen); solltest du auch "URL-Design" betreiben,
würde ich schon die Endung auch am Ende belassen.

> Haben die Positional-Parameter gegenüber diesen PATH_INFO einen wichtigen

Positional-Parameter?

Bob

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


Mime
View raw message