ugrás a tartalomhoz

Apache mod_rewrite %26 ( and ) és %2F ( / ) jel

cadmagician · 2007. Már. 1. (Cs), 08.43
Van ez a rewrite:
ReWriteCond %{REQUEST_FILENAME} !-f
ReWriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?:valami/)?([^/]*)/?(.*)/?$ index.php?module=$1&parameters=$2 [QSA]
ez úgy működik, hogy visszaadja hívott modult, meg a többit. pl:

valami/kereses/adat1:valami/adat2:valami2/


Array
(
[module] => kereses
[parameters] => adat1:valami/adat2:valami2/
)

ebből tudom, hogy a keresés modult kell betölteni, és az adat1=valami, adat2=valami, persze még fel kell dolgozni.

Gebasz van, ha ilyet kap:
valami/kereses/adat1:valami%26ez/adat2:valami2%26az/
%26 = &
ekkor ezt kapom:

Array
(
[module] => kereses
[parameters] => adat1:valami
[ez/adat2:valami2] =>
[az/] =>
)

tehát megtöri az "&" jelnél ami %26, hiába van urlencode

továbbá gáz még, ha ilyet kap:

valami/kereses/valami:%2F/ =>404 object not found

%2F = /

Szal hogy lehet mind a %26 és a %2F esetében is működésre bírni a rewriteot?

Sőt ezzel a legegyszerűbbel is ugyanez a baj:

ReWriteCond %{REQUEST_FILENAME} !-f
ReWriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?module=$1 [QSA]

Köszi.
 
1

Megfejtés

cadmagician · 2007. Már. 1. (Cs), 16.05
Szóval a hibát egy (ha jól értettem) mod_rewrite bug adja:

http://fgiasson.com/blog/index.php?cat=118

megfejtés: mikor az urlt állítom elő, akkor kétszer kell url_encode.

Egyébként a %2F-re a weblabor is elszáll. :)