![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Cheatah, 29. 11. 2001, 18:33
Hi,
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.
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?
Cheatah
Die folgende Nachricht zum Thema stammt von: Christian Kruse, 29. 11. 2001, 18:52
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
Die folgende Nachricht zum Thema stammt von: Cheatah, 29. 11. 2001, 19:02
Hi,
»» Ouch, das wird aber viel Traffic.
naja, es findet alles noch serverintern statt, ohne Roundtrip zum Client. Ist aber trotzdem nicht hübsch...
»» Wie waere es mit RewriteMap?
Keine schlechte Idee; nur fürchte ich, dass ein Perlscript nicht wirklich die Zustimmung unserer IT findet... allein schon den Perl-Interpreter ein paar dutzend Mal pro Sekunde neu zu starten könnte ein wenig unperformant sein :-)
»» ### die transformationen erspar ich mir jetzt, das kannst du besser
Danke :-)
Ich behalte die Idee mal im Hinterkopf; auf jeden Fall ist es eine Lösung, die ich testen werde - danke dafür! Ich bin aber weiterhin offen für Alternativen ;-)
Cheatah
Die folgende Nachricht zum Thema stammt von: Christian Kruse, 29. 11. 2001, 19:17
Hoi,
»» »» Wie waere es mit RewriteMap?
»» Keine schlechte Idee; nur fürchte ich, dass ein Perlscript nicht wirklich die Zustimmung unserer IT
»» findet... allein schon den Perl-Interpreter ein paar dutzend Mal pro Sekunde neu zu starten könnte
»» ein wenig unperformant sein :-)
Tja, es muss ja nicht unbedingt ein Perl-Script sein. Schreib dir halt ein kleines C-Programm,
das tuts auch; viel laenger als 10 Zeilen braeuchte es ja nicht zu sein.
Gruesse,
CK
Die folgende Nachricht zum Thema stammt von: Cheatah, 29. 11. 2001, 19:39
Hi,
»» Tja, es muss ja nicht unbedingt ein Perl-Script sein. Schreib dir halt ein kleines C-Programm,
»» das tuts auch; viel laenger als 10 Zeilen braeuchte es ja nicht zu sein.
klingt schon ein wenig freundlicher... obwohl ich unsere gestrenge IT schon meckern höre :-)
"Mein C-Mensch" ist leider erst nächste Woche wieder da; und da hier mittlerweile jemand auf eine etwas internere (potentielle) Möglichkeit hingewiesen hat, warte ich auf jeden Fall erst mal ab, was der dazu meint. Ich halte Dich aber auf dem laufenden :-)
Chea "Thanks again" tah
Die folgende Nachricht zum Thema stammt von: Frank Schönmann, 30. 11. 2001, 16:41
hi!
»» Keine schlechte Idee; nur fürchte ich, dass ein Perlscript nicht
»» wirklich die Zustimmung unserer IT findet... allein schon den
»» Perl-Interpreter ein paar dutzend Mal pro Sekunde neu zu starten
»» könnte ein wenig unperformant sein :-)
.oO( mod_perl )
bye, Frank!
Die folgende Nachricht zum Thema stammt von: Cheatah, 30. 11. 2001, 18:34
Hi,
»» .oO( mod_perl )
steht leider aus Gründen, die sowohl den Rahmen als auch meine Schweigepflicht sprengen, zu meinem tiefsten Bedauern nicht zur Debatte. Aber thanks für den Gedanken :-)
Cheatah
Die folgende Nachricht zum Thema stammt von: Christian Kruse, 30. 11. 2001, 22:43
Hoi,
»» »» .oO( mod_perl )
»» steht leider aus Gründen, die sowohl den Rahmen als auch meine Schweigepflicht sprengen, zu meinem tiefsten Bedauern nicht zur Debatte. Aber thanks für den Gedanken :-)
Und ist auch gar nicht moeglich in dem Fall.
Gruesse,
CK
Die folgende Nachricht zum Thema stammt von: Klaus Mock, 29. 11. 2001, 20:22
Hallo,
Und was ist, wenn Du zuerst mal Nullen anhängst, und die überschüssigen dann in einem zweiten Schritt entfernst?
Dann kanstt Du "/bla/0000/0000/0000123.blub" mittels /0+(\d{4})/ auf /$1/ mappen.
Ist nur so eine Idee.
Grüße
Klaus
Die folgende Nachricht zum Thema stammt von: Cheatah, 29. 11. 2001, 21:28
Hi,
»» Und was ist, wenn Du zuerst mal Nullen anhängst, und die überschüssigen dann in einem zweiten Schritt entfernst?
kein übler Gedanke. Kostet garantiert zwei Rewrites, ist aber damit O(1) und ergo überschaubar :-)
Prima Idee, danke!
Cheatah
Die folgende Nachricht zum Thema stammt von: Sven Rautenberg, 29. 11. 2001, 21:51
»» Hi,
»» 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.
Welcher Zahlenbereich muß denn da abgedeckt werden? Welcher Request kommt denn raus, wenn /bla/12345/ angefordert wird?
In Erweiterung der Idee, erstmal viele Nullen davorzusetzen:
Zunächst von /bla/123/ auf /bla/000000000123/, dann Viererketten bilden. Bei unterschiedlich langen Ziffernfolgen von hinten vielleicht eine kleine Herausforderung. :)
- Sven Rautenberg
Die folgende Nachricht zum Thema stammt von: Cheatah, 30. 11. 2001, 14:43
Hi,
»» Welcher Zahlenbereich muß denn da abgedeckt werden?
zumindest ein- bis zehnstellige Zahlen.
»» Welcher Request kommt denn raus, wenn /bla/12345/ angefordert wird?
/bla/0000/0001/2345.blub
Im Grunde wird die Zahl zwölfstellig gemacht und nach jeder vierten Stelle durch einen Slash getrennt.
»» Zunächst von /bla/123/ auf /bla/000000000123/, dann Viererketten bilden.
Wird schwierig, weil ich nicht automagisch die nötige Zahl der Nullen ermitteln kann. Ich lasse mich gerne vom Gegenteil überzeugen; aber bei dieser Variante brauche ich glaube ich (fix) drei Rewrites.
»» Bei unterschiedlich langen Ziffernfolgen von hinten vielleicht eine kleine Herausforderung. :)
Ja - die unterschiedliche Länge ist es, die mir zu schaffen macht... ohne das wär's ja einfach :-)
Auch Dir danke,
Cheatah
© 1998-2008
Impressum, Software: Classic Forum