2011-12-11 26 views
12

Tengo un problema con un parámetro get junto con una regla de reescritura htaccess. A continuación se muestra el enlace urlencode() 'ed; la regla de reescritura que uso para redirigir a index.php y, por último, print_r ($ _ GET) en el index.php. Como puede ver, el signo & amp; urlescaped no forma parte del valor de la variable estática, sino que, en cambio, y al contrario de lo esperado, se interpreta como un separador de variables. ¿Por qué?

enlace inicial:

<a href="static/Game-Tech-%26-Arts-Lab">link</a> 

.htaccess:

RewriteRule ^static/(.*)$ /index.php?static=$1 [L] 

index.php:

Array ([static] => Game-Tech- [-Arts-Lab] =>) 
+0

¿De qué manera el '$ _SERVER [ "QUERY_STRING"]' buscar esa petición? ¿Y la reescritura no ocurre cuando se invoca manualmente el 'index.php? Static = ...'? – mario

+0

Navegando manualmente a "index.php? Static = Game-Tech-% 26-Arts-Lab" muestra la página muy bien - $ _SERVER ["QUERY_STRING"] dice "[QUERY_STRING] => static = Game-Tech- & -Arts-Lab " – kontur

Respuesta

23

Ah, está bien. Interesante. Parece que hay una solución especial para mantener ese ampersand específicamente escapado. Use el [B] flag for Rewriterules.

RewriteRule ^static/(.*)$ /index.php?static=$1 [L,B] 

Esto se supone que urlencode caracteres especiales al interpolar el marcador de posición $1. Solo funciona con Apache 2.2 sin embargo, creo.

encontrado algunas referencias:

+0

¡Oh, eso es noticia! Eso solo lo solucionó. Tendré que aprender esas banderas de reescritura un poco más, ¡gracias por la ayuda de Mario! – kontur

+0

Tampoco sabía de eso. Es nuevo. – mario

+0

Fantástico - gracias por esto! – Simeon

Cuestiones relacionadas