php - rewriteengine - .htaccess: las variables GET se pierden al reescribir
rewriterule htaccess apache (4)
Aparentemente, la reescritura de .htaccess se come todas las $_GET
en mi página:
Cuando accedo a la URL http://192.168.1.1/welcome/test?getvar=true y var_dump($_GET)
en mi archivo index.php, obtengo este resultado:
array
''/welcome/test'' => string '''' (length=0)
Entonces, no hay $_GET
-data disponible y no hay signos de la getvar
de mi URL.
Aquí está mi .htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
¿Qué debo cambiar para asegurarme de que mi reescritura funciona según lo previsto pero que las $_GET
todavía son accesibles?
Necesita la opción "QueryString Append":
RewriteRule ^(.*)$ index.php?route=/$1 [QSA,L]
Edición: Se agregó la contribución de @ DonSeba, porque es correcta.
cambio menor de detalle:
RewriteRule ^(.*)$ index.php?/$1 [L]
a
RewriteRule ^(.*)$ index.php?route=$1 [QSA,L]
ahora todas las rutas serán visibles en $ _GET ["ruta"]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^myapi(.*) ./my_real_api_file.php? [QSA]
</IfModule>
Hizo el truco para mí.
Ahora puede solicitar: http://www.mydomain.com/myapi?foo=xy&bar=ab
y será redirigido a: http://www.mydomain.com/my_real_api_file.php?foo=xy&bar=ab
Puede ser muy útil para ocultar su código api.
RewriteRule ^(.*)?(.*)$ index.php?/$1&$2 [L]