[Technik] Feature Request: RewriteMaps fuer Apache mod_rewrite
Michael Hierweck
team at edv-serviceteam.net
Wed May 14 11:16:26 CEST 2008
Hallo,
ich möchte gern das Feature RewriteMap als Ergänzung der
Leistungsfähigkeit von Apaches mod_rewrite vorschlagen.
Über dieses Feature können Textdateien in die Konfigration eingebunden
und im Rahmen von RewriteRules ausgewertet werden. Die Konfiguration
kann leider nicht über die .htaccess gesteuert werden, aber in die
Konfiguration von virtual hosts eingebunden werden.
Um es nicht zu kompliziert (dbm) oder unsicher (prg), würde ich mich auf
die einfachen Typen (txt, rnd) beschränken wollen:
Dazu werden in jeden virtual host folgende Optionen aufgenommen:
RewriteMap txt txt:/home/doms/example.com/etc/rewritemap.txt
RewriteMap rnd rnd:/home/doms/example.com/etc/rewritemap.rnd
Diese Dateien können vom Domain-Admin erzeugt und verändert werden und
folgendermaßen aussehen:
rewritemap.txt:
old.html new.php
older.html newer.php
rewritemap.rnd:
zahlen eins|zwei|drei
farben rot|orange|gelb|gruen|blau|violett
In den RewriteRules der .htaccess können diese Funktionen für statische
oder zufällige Ersetzungen verwendet werden.
RewriteRule /here/(.*) /there/${txt:$1}
RewriteRule (.*) /eins-zwei-oder-drei/${rnd:zahlen}.html
RewriteRule (.*) /regenbogen/${rnd:farben}.html
Praktische Anwendungsfälle sind das Mapping zahlreicher alter URLs auf
neue bzw. eine primitive Form des Balancings von Requests.
Die Features sind hier dokumentiert und in gleicher Weise für Apache 1.3
und 2.2 verfügbar.
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteMap
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemap
Der Feature-Wunsch ergibt sich daraus, dass die Performance unter langen
Listen von RewriteRules sehr leidet, wenn bspw. "sprechende" URLs
eingeführt oder verändert werden und dies mit regulären Ausdrücken nicht
abgehandelt werden kann. Ferner ist "Zufall" in RewriteRules bisher nur
mit eigener httpd.conf möglich, so dass das (zufällige) Ansteuern
mehrerer Applikationsserverinstanzen bisher notwendigerweise eine eigene
httpd.conf erfordert.
Viele Grüße
Michael
More information about the Technik
mailing list