Estoy intentando reenviar /test/12 para test?var=12 usando htaccess
He configurado mi archivo .htaccess de la siguiente manera:
RewriteEngine on RewriteRule ^test/(.+)$ test?$1 [L]¿Puede alguien señalarme en la dirección correcta?
Gracias
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^test/([a-zA-Z0-9|]+)/([^/]*)/(.*)$ test.php?var1=$1&var2=$2&var3=$3 [B,QSA] [^/] significa "cualquier carácter que no sea una barra oblicua". Naturalmente, esto significa que el "texto" no puede contener barras, pero su URL coincidirá correctamente.
También tenga en cuenta la [B] que es una de las muchas opciones que puede agregar a una regla de reescritura. [B] significa que cualquier & s y algunos otros caracteres se escaparán.
ahora en tu test.php
print_r($_GET); dará salida a la url http://localhost/test/123/456/asdf :
Array ( [var1] => 123 [var2] => 456 [var3] => asdf )Mi error fue agregar .htaccess en el directorio incorrecto. Debería haberlo agregado en el directorio principal, pero estaba agregando ^test/(.+)$ test?$1 en el directorio de test .
Quería tomar la consulta completa después de la barra diagonal final en la URL, por lo que la regla que usé en el directorio principal fue RewriteRule ^(.*)$ test.php?$1 . Esto, a su vez, provocó un bucle circular, por lo que lo redirigí a un directorio dentro del padre, por lo que la regla de trabajo final que tomó la parte final de la cadena de URL después de / y la reenvió como una variable a test.php?$1 se veía así.
Regla de reescritura ^(.*)$ prueba/prueba.php?$1