htaccess
Micha27
- webserver
Hallo!
Ich habe folgendes Problem:
In meiner htaccess leite ich eine url um, die eine andere url enthält
http://meinedomain.de/out/http%3A%2F%2Fdeinedomain.de%3Fparam%3D0
soll umgeleitet werden auf
http://deinedomain.de?param=0
Prinzipiell funktioniert das auch durch Vergleich von %{REQUEST_URI} in einer RewriteCond und dann mit einer RewriteRule. Das funktioniert, weil http://deinedomain.de?param=0 urlencoded ist und in der htaccess am Anfang automatisch urldecoded wird.
Wenn ich diesen Link aber per Email verschicke, urldecoden einige Anbieter die Slashes und das Fragezeichen, dann kommt bei der htaccess dies an:
http://meinedomain.de/out/http%3A//deinedomain.de?param%3D0
was dazu führt, dass die htaccess das urldecode nur auf die Request_Uri durchführt (die Request_Uri ist der Teil vor dem Fragezeichen) und den Query_String (der Teil nach dem Fragezeichen) belässt.
Dadurch wird letztenendes falsch weitergeleitet und zwar auf:
http://deinedomain.de?param%3D0
Um das zu umgehen, habe ich bereits alles möglich versucht - bisher ohne Erfolg.
Folgend Ansätze erscheinen mir am viel versprechensten, allerdings hat es bisher nicht geklappt und ich weiß nicht mehr weiter:
Über Hilfe würde ich mich sehr freuen.
Vielen Dank im Voraus
Micha
- Der Query_String müsste in der htaccess urldecoded werden - aber wie?
Lies doch bitte die Doku, was QUERY_STRING tut.
- Ich bräuchte die volle Request_Uri mitsamt Query_String - dafür gibt es aber meines Wissens keine htaccess-Variable, oder?
Wozu? Was stört dich an REQUEST_URI?
Über Hilfe würde ich mich sehr freuen.
Ich würde mich freuen, wenn du künftig RFC 2606 beachten würdest :)
Ich hab schon verstanden, was QUERY_STRING tut und REQUEST_URI reicht mir nicht, weil ich die komplette url benötige, um richtig weiterzuleiten (hast Du mein Problem überhaupt verstanden?)
Und von mir aus wird auch gerne auf http://deinedomain.example weitergeleitet, wenn es Dich glücklich macht :)
- Der Query_String müsste in der htaccess urldecoded werden - aber wie?
Lies doch bitte die Doku, was QUERY_STRING tut.
- Ich bräuchte die volle Request_Uri mitsamt Query_String - dafür gibt es aber meines Wissens keine htaccess-Variable, oder?
Wozu? Was stört dich an REQUEST_URI?
Über Hilfe würde ich mich sehr freuen.
Ich würde mich freuen, wenn du künftig RFC 2606 beachten würdest :)
Hi,
bitte zitiere sinnvoll, das worauf du dich konkret beziehst, und nicht einfach alles, danke.
Ich hab schon verstanden, was QUERY_STRING tut und REQUEST_URI reicht mir nicht, weil ich die komplette url benötige, um richtig weiterzuleiten (hast Du mein Problem überhaupt verstanden?)
Und warum setzt du dir den kompletten URL dann nicht unter Zuhilfenahme des QUERY_STRING zusammen?
MfG ChrisB
Und warum setzt du dir den kompletten URL dann nicht unter Zuhilfenahme des QUERY_STRING zusammen?
Genau das habe ich probiert. Problem: QUERY_STRING wird - im Gegensatz zu REQUEST_URI nicht urldecoded, daher wird %3D nicht durch = ersetzt und daraus resultiert das Problem...
Hi,
Wenn ich diesen Link aber per Email verschicke, urldecoden einige Anbieter die Slashes und das Fragezeichen, dann kommt bei der htaccess dies an:
http://meinedomain.de/out/http%3A//deinedomain.de?param%3D0
Um das zu umgehen, habe ich bereits alles möglich versucht - bisher ohne Erfolg.
Du müsstest ja erst mal beide Fälle unterscheiden können - und dazu sehe ich ohne extremen Aufwand per mod_rewrite keine Chance.
Vermutlich wäre es simpler, das ganze über ein Script zu regeln - da hast du Stringfunktionen etc. zur Verfügung, und kannst den übergebenen Parameter nach Belieben auswerten.
Aber auch dann musst du dir noch überlegen, wie du die beiden (oder mehr?) Fälle unterscheidest - und ob das überhaupt mit Sicherheit geht.
http%3A// - wenn nur der Doppelpunkt kodiert ist, die Slashes aber nicht, dann *könnte* das im geschilderten Fall ein Anzeichen sein. Aber was, wenn andere Mailclients wieder andere Manipulationen vornehmen ...?
Auf der ganz sicheren Seite wärst du, wenn du überhaupt nicht den URL als Parameter gibst, sondern nur eine ID - die du dann im Script verwendest, um über ein Array/Tabelle/… die Zuordnung zu einem URL zu machen.
MfG ChrisB