2011-07-11 20 views
17

Al parecer, mi .htaccess reescritura se come todos los $_GET variables- en mi página:.htaccess: obtener las variables se pierden en la reescritura

Cuando se accede a la URL http://192.168.1.1/welcome/test?getvar=true y funcionando var_dump($_GET) en mi archivo index.php, consigo este esta salida:

array 
'/welcome/test' => string '' (length=0) 

Así que no $_GET -los datos disponibles y no hay señales de la getvar -Variable de mi URL.

Aquí es mi .htaccess:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

¿Qué debería cambiar para asegurar que mi reescritura funciona según lo previsto, pero aún $_GET variables- son accesibles?

Respuesta

53

Usted necesita la opción "Anexar cadena de consulta":

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

Editar: Añadido @ contribución de DonSeba, porque es correcto.

+0

Gracias! Esto parece estar funcionando bien. Un rapidito: parece que la barra inclinada final es necesaria para capturar los parámetros '$ _GET'. ¿Sería posible tener el pastel y comerlo, es decir. ser capaz de hacer tanto 'welcome/test? avar = 1' como' welcome/test /? avar = 1'? ¡Gracias! – Industrial

+0

No estoy seguro de eso. ¿Podría ser su nombre de variable faltante? –

+0

probado y funciona bien sin la barra de enging aquí. Utilizado para JQuery UI Autocompletar, porque eso siempre agrega el parámetro 'término'. 'RewriteRule^service/autocomplete /(.+)$ autocomplete.php? Type = $ 2 [QSA, L]'. –

1
RewriteRule ^(.*)?(.*)$ index.php?/$1&$2 [L] 
6

menor cambio detalle:

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

a

RewriteRule ^(.*)$ index.php?route=$1 [QSA,L] 

ahora todas las rutas será visible en $ _GET [ "ruta"]

Cuestiones relacionadas