Christian Kruse: RewriteRule mit Zero-Padding

Beitrag lesen

Hoi,

ich stehe vor dem Problem, ein nicht ganz leichtes URL-Rewriting durchführen zu dürfen. Der
Request geht z.B. auf "/bla/123/", und als Ergebnis muss dann "/bla/0000/0000/0123.blub"
ausgelesen werden.

Das Aufsplitten einer Zahl in Viererketten ist kaum 'ne Fingerübung, aber die (eventuell)
fehlenden Nullen aufzufüllen macht mir dann doch etwas Kopfzerbrechen. Meine Lösung sähe
mehr oder weniger so aus, erst mal "auf gut Glück" etwas wie "/bla///123.blub" zu erzeugen, und
dann in späteren Rewrites alle "/(\d{0,3})/" durch "/0$1/" zu ersetzen (o.ä.), bis nichts mehr
gefunden wird.

Ouch, das wird aber viel Traffic.

Ich bin davon überzeugt, dass das ganze auch in einem, maximal zwei Rewrites geht, nur fehlt
mir der geniale Gedanke; zudem ist meine Erfahrung mit mod_rewrite noch recht minimal. Kann
mir jemand auf die Sprünge helfen?

Wie waere es mit RewriteMap?

RewriteEngine On
RewriteMap scary-url prg:/path/to/perlscript

RewriteCond ^/bla/123/
RewriteRule ^/bla/123/ ${scary-url:/bla/123/|default-val}

perlscript:
#!/usr/bin/perl -w
$| = 1;
while(my $row = <STDIN>)
 {
  ### die transformationen erspar ich mir jetzt, das kannst du besser
 }

Gruesse,
 CK