apache - unable - url decode php utf8
mod_rewrite urlencoding un parámetro de cadena de consulta ya urlencoded-¿hay alguna forma de deshabilitar esto? (1)
la forma de lograr esto es a través del parámetro NE (sin escape).
RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L]
de hecho debería leer
RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,NE,L]
esto obligará a mod_rewrite a dejar todos los valores de cadena de consulta tal como están, sin hacer ninguna codificación / escape.
tan fácil como eso :)
Tenemos algunas reglas mod_rewrite muy básicas:
RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L]
mod_rewrite parece hacer su trabajo, y si el usuario está accediendo:
something.swf?param=value
, se redirige correctamente a http://www.newdomain.com/something.swf?param=value
el problema está en esta situación:
www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
lo que termina sucediendo es mod_rewrite se encarga de re-urlencode el param cadena de consulta
entonces, lo que el usuario termina es:
www.olddomain.com/something.swf?param=URL_ENCODED_VALUE
REDIRECTADO A
www.newdomain.com/something.swf?param=URL_ENCODED_VALUE_OF_URL_ENCODED_VALUE
así que terminamos con un valor double urlencoded. ¡bochas!
Si bien entiendo que podríamos hacer una regla /?(.*)
... ?$1
para esto, estoy pensando que debe haber una manera de decirle a mod_rewrite NO urlencode los parámetros de la cadena de consulta ... nos gustaría evitar el uso 2 reglas desde rutas válidas son:
something.swf (no query string)
y
something.swf?someparams...
así que sí, idealmente ... solo díganle a mod_rewrite: por favor, no urlencoding de los parámetros de la cadena de consulta ... simplemente pasen directamente a la nueva URL a través de R=302
.