Page 1 of 1
aus %2F einen / in der URI machen
Posted: 2008-05-28 14:23
by taurin
Servus,
ein dolles Device (SSL-VPN) in unserem Netz sorgt dafür, dass Requests mit "/" zu "%2F" umgebogen werden. Da kommt dann aber Squirrelmail ausm Tritt (und andere Web-Apps auch) aufm apache.
Ich hab noch nie was mit mod_rewrite gemacht und trotz Sucherei (und ja, ich hab die Doku gelesen) hab ich auch nichts für mich anpassbares gefunden bzw. es selbst nicht hinbekommen.
Ich such also ein mod_rewrite, das die gesamte URL nach %2F durchsucht und durch / ersetzt. Anyone?!
Achja: AllowEncodedSlashes ist leider nicht die Lösung und nein, ich kann das doofe Device nicht einfach tauschen :)
Merci vielmals!
Re: aus %2F einen / in der URI machen
Posted: 2008-05-28 16:38
by Joe User
Mit mod_rewrite kannst Du nur eine feste, keine variable, Anzahl an Vorkommen ersetzen. Daher wirst Du jeden einzelnen möglichen URL auf die jeweilige Anzahl der %2F prüfen und eine RewriteRule anlegen müssen. Für ein paar URL mag sich dieser Aufwand ja noch lohnen, aber so ab 100 URL dürfte das Beheben des eigentlichen Problems billiger und schneller sein.
Die einfachste RewriteRule müsste in etwa so aussehen:
Code: Select all
RewriteRule ([a-zA-Z0-9_+-])%2F $1/
Re: aus %2F einen / in der URI machen
Posted: 2008-05-28 16:55
by dotme
Joe User wrote:Mit mod_rewrite kannst Du nur eine feste, keine variable, Anzahl an Vorkommen ersetzen. Daher wirst Du jeden einzelnen möglichen URL auf die jeweilige Anzahl der %2F prüfen und eine RewriteRule anlegen müssen.
Mit dem Flag [N] müsste man eigentlich eine Art Schleife bzw. Rekursion hinbekommen?! Ich habe gerade keinen Apache zum Testen zur Hand, aber ein erster Lösungsansatz könnte so aussehen.
Code: Select all
RewriteRule ^/(.*)%2F(.*)$ $1/$2
RewriteRule ^.*%2F - [N]
Evtl. sind weitere Flags wegen dem escapten Schrägstrich nötig.
Re: aus %2F einen / in der URI machen
Posted: 2008-05-30 14:39
by taurin
Erstmal danke für Eure Antworten, allerdings passiert weder beim einen noch beim anderen Vorschlag irgendwas, trotz diverserer rumspielereien (mod rewrite ist übrigens enabled :) ). Die URI ist wie folgt aufgebaut:
Code: Select all
http://host/squirrelmail/src/right_main.php?PG_SHOWALL=0&sort=0&startMessage=1&mailbox=INBOX%2Fsomething
Re: aus %2F einen / in der URI machen
Posted: 2008-05-30 14:56
by Joe User
Re: aus %2F einen / in der URI machen
Posted: 2008-06-02 09:44
by taurin
Code: Select all
http://host/squirrelmail/src/right_main.php?PG_SHOWALL=0&sort=0&startMessage=1&mailbox=INBOX%2Fsomething
ERROR: Could not complete request.
Anfrage: SELECT "INBOX%2Fsomething"
Reason Given: Mailbox does not exist
Achja: Andere rewrites klappen (z. B. http zu https und so). Nur um zu beweisen, dass das mod_rewrite geladen ist :)
Ich würde an sich sagen, dass Eure Vorschläge (nochmal vielen Dank dafür) funktionieren müssten. Meine eigenen Versuche waren ähnlich. Ich raffs im Moment überhaupt nicht.
Re: aus %2F einen / in der URI machen
Posted: 2008-06-02 12:55
by terx`
Ich vermute, das %2 von %2F wird als Variable interpretiert. Ich schlage %%2F und %2F mal vor.
Re: aus %2F einen / in der URI machen
Posted: 2008-06-03 10:01
by taurin
terx` wrote:Ich schlage %%2F und %2F mal vor.
Hatte ich auch schon versucht (aber jetzt nochmal). Leider ohne Erfolg. mod_rewrite erkennt "%2F" einfach nicht. Die Sau :)
Ich hab mal einen "/" in einer OR Bedingung erkennen lassen, den hat er gefressen. Komische Sache das.