[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