Después de de esta extensa selección de información dimos con la solución este enigma que suelen tener algunos de nuestros lectores. Te ofrecemos la solución y nuestro objetivo es resultarte de mucha apoyo.
Solución:
El funcionamiento normal de apache / mod_rewrite no funciona así, ya que parece convertir los signos más en espacios.
No creo que eso sea exactamente lo que está sucediendo. Apache está decodificando% 2Bs a + s en la parte de la ruta, ya que + es un carácter válido allí. Hace esto antes de dejar que mod_rewrite mire la solicitud.
Entonces mod_rewrite cambia su solicitud ‘/ tag / c ++’ a ‘script.php? Tag = c ++’. Pero en una consulta string componente en el formato application / x-www-form-encoded, las reglas de escape son ligeramente diferentes a las que se aplican en las partes de la ruta. En particular, ‘+’ es una abreviatura de espacio (que bien podría codificarse como ‘% 20’, pero este es un comportamiento antiguo que nunca podremos cambiar ahora).
Entonces, el código de lectura de formularios de PHP recibe el ‘c ++’ y lo descarga en su _GET como C-space-space.
Parece que la forma de evitar esto es usar la reescritura de la bandera ‘B’. Vea http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteflags – ¡curiosamente usa más o menos el mismo ejemplo!
RewriteRule ^tag/(.*)$ /script.php?tag=$1 [B]
No estoy seguro de entender lo que estás preguntando, pero el NE
(noescape) bandera a Apache RewriteRule
La directiva puede ser de su interés. Básicamente, previene mod_rewrite
de escapar automáticamente los caracteres especiales en el patrón de sustitución que proporcione. El ejemplo dado en la documentación de Apache 2.2 es
RewriteRule /foo/(.*) /bar/arg=P1%3d$1 [R,NE]
que se convertirá, por ejemplo, /foo/zed
en una redirección a /bar/arg=P1%3dzed
, para que el guión /bar
luego verá un parámetro de consulta llamado arg
con un valor P1=zed
, si mira en su PATH_INFO
(está bien, eso no es un verdadero parámetro de consulta, así que demandame ;-P).
Al menos, creo que así es como funciona. . . Yo nunca he usado esa bandera en particular.
Puntuaciones y reseñas
Si tienes alguna vacilación y forma de progresar nuestro escrito eres capaz de añadir una acotación y con mucho placer lo observaremos.