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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top