regex - http_host - Regla de reescritura de Apache que funciona con o sin una barra diagonal final
url rewrite request_uri (4)
Estoy tratando de redireccionar una serie de URL estáticas, y quiero que funcione ya sea que la barra diagonal final esté presente o no:
/foo/bar ---> /tacos
/foo/bar/ --> /tacos
He intentado lo siguiente y todo tipo de variaciones, pero siempre obtengo una coincidencia solo con la barra diagonal actual:
RewriteRule ^foo/bar?/$ http://url.com/tacos
RewriteRule ^foo/bar(?/)$ http://url.com/tacos
RewriteRule ^foo/bar*/$ http://url.com/tacos
RewriteRule ^foo/bar(*/)$ http://url.com/tacos
Siento que me falta algo obvio. ¿Ayuda?
Esto también funciona: RedirectMatch 301 /foo/bar(/.*|$) http://url.com/tacos
Si quieres hacer coincidir foo / bar independientemente de si va seguido de otra parte de la ruta, puedes decir:
RewriteRule ^foo/bar(/.*|$) http://url.com/tacos
Esto coincidirá con cualquiera de los siguientes:
foo/bar
foo/bar/
foo/bar/baz
Significa: que coincida con a) una barra inclinada seguida de 0 o más caracteres, o b) el final de la cadena.
Por otro lado, estos podrían ser indeseables:
RewriteRule ^foo/bar/? http://url.com/tacos # This also matches foo/barb
RewriteRule ^foo/bar/?$ http://url.com/tacos # This will not match foo/bar/baz
Tratar
RewriteRule ^foo/bar/?$ http://url.com/tacos