2010/3/22 Marc Aymerich <[email protected]> > Buenas Listeros!! > > Tengo un servidor web con un monton de redirecciones usando las directivas > redirect y redirectMatch. Pero hoy me he visto obligado a usar el modRewrite > para hacer algunas redirecciones condicionales. El problema que tengo es que > parece que el modrewrite tiene más prioridad que las directivas redirect y > redirectmatch. > > Si por ejemplo tengo esta definicion de virtualhost: > > <VirtualHost *:80> > [...] > Redirect /lollypop http://lollipop.com > [...] > RewriteEngine on > RewriteRule /lollipop http://example.org > </VirtualHost> > > Resulta que siempre se me redirige a http://example.org y núnca a > http://lollipop.com, a pesar de que la segunda opción aparece antes en el > virtualhost. Es normal este comportamiento? hay alguna forma de que el > apache ejecute las directivas por el orden en que aparecen? > > saludos y graciaS!! > -- > Marc >
Parece que la mejor solución es pasarlo todo a modrewrite, Os pongo lo que me ha comentado Bertrand de debian-isp: On Mon, Mar 22, 2010 at 07:20:56PM +0100, Marc Aymerich wrote: > I have an apache2.15 with a lot of redirections using redirect and > redirectmatch directives. Today I write some mod_rewrite rules (because I > need some conditional redirections). I put this new rewrite directives after > my old redirect and redirectmatch rules, just at the end of the virtualhost > definition, because I expect that apache execute first my old definitions, > and then my new rewrite rules. But apache execute the mod_rewrite rules in > the first place! [...] > There are any way to change this behavior? No. mod_rewrite translates names at APR_HOOK_FIRST but mod_alias at APR_HOOK_MIDDLE. So, whatever order your modules are loaded, you'll get rewrite rules to be evaluated before any mod_alias translation.

