.htaccess rewritecond rewrite case level 2 folder = info
-
05-07-2019 - |
Pregunta
Quería configurar .htaccess
para volver a escribir:
example.com/bla/info/
a
example.com/info/index.php?q=bla
example.com/bla/info/txt/
a
example.com/info/index.php?q=bla&t=txt
Quería que el navegador aún se mostrara:
example.com/bla/info/txt/
No quería volver a escribir en las reescrituras de nivel 2, como:
example.com/bla/xxx/
o
example.com/ccc/zzz/aaa/
pero
example.com/silly/info/
funcionaría tan bien como
example.com/strange/info/mytxt/
¿Esto tiene sentido?
¿Alguna ayuda?
Solución
Si comienzas tu patrón con ^ y lo terminas con $, la regla solo se aplicará si toda la cadena coincide.
RewriteRule ^/bla/info/$ /info/index.php?q=bla
RewriteRule ^/bla/info/txt/$ /info/index.php?q=bla&t=txt
Si no usas la opción [R], la URL que se muestra en el navegador será lo que haya ingresado el usuario.
¿Estás tratando de hacer este propósito general? Si es así, puede utilizar la coincidencia de tipo regex y la sustitución de variables. Para hacer que 'bla' coincida con cualquier cadena hasta la siguiente barra (/), utilice
([^/]+)
en su patrón y refiérase con $ 1 en su sustitución.
RewriteRule ^/([^/]+)/info/$ /info/index.php?q=$1
RewriteRule ^/([^/]+)/info/([^/]+)/$ /info/index.php?q=$1&t=$2
Recomiendo las páginas web Apache sobre mod_rewrite para más información .
[Editar. Se corrigieron las reglas para no incluir el nombre del host en el patrón, como se descubrió en el póster original.]
-
bmb
Otros consejos
me tienes en el camino correcto.
Terminé con algo como esto:
RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L]
muchas gracias