dedlfix: mod_rewrite und & vs. %26

Beitrag lesen

Hi!

Was steht wirklich in $_GET["path"]?
Scheint ein Problem der RewriteEngine zu sein, da der Teil ab dem "%" nicht mehr in $path enthalten ist.

Jein (vermutlich). Was kommt bei PHP an? Die phpinfo()-Ausgabe im unteren Teil ($_SERVER-Inhalt) wäre interessant. Ich nehme an, dass dort ein & zu sehen ist, und PHP das als Parametertrenner ansieht, woraufhin es $_GET entsprechend füllt.

Die URI "/de/Tipps+%26+Tricks" wird also mittels "RewriteRule ^de/(.*) /index.php?path=$1 [QSA,L]" übergeben als "Tipps "

Ich nehme an, gelesen zu haben, dass mod_rewrite die Escape-Sequenzen auflöst, bevor es ans Auswerten geht. Laut Apache-Dokumentation zu RewriteRule gibt es das Flag NE, das sich mit der Problematik beschäftigt. Allerdings sollte die Zeichen kodieren, wenn es nicht gesetzt ist. Anscheinend lässt es jedoch & unberührt, da das ja auch als Parametertrenner verwendet wird. Es ergibt sich nämlich das Problem, dass ein %26 nach dem Auflösen nicht mehr von einem Parametertrenner-& unterschieden werden kann.

Momentan fällt mir nicht ein, wie dieses Problem gelöst werden kann.

Lo!