apache - rewritecond - rewriterule htaccess




.htaccess directivas para*no*redirigir ciertas URL (2)

¿No podría aplicar la condición a las siguientes reglas, pero con negación, como en (con algunas variaciones de las mismas, no soy demasiado bueno para recordar las reglas de .htaccess, por lo que las banderas podrían estar equivocadas):

RewriteCond $1 !^(static|otherDir).*$ [NC]
RewriteRule ^$ app/webroot/ [L]

RewriteCond $1 !^(static|otherDir).*$ [NC]
RewriteRule ^$ app/webroot/$1 [L]

En una aplicación que se basa en .htaccess RewriteRules para sus PrettyURLs (CakePHP en mi caso), ¿cómo configuro correctamente las directivas para excluir ciertos directorios de esta reescritura? Es decir:

/appRoot/.htaccess
         app/
         static/

Por defecto, cada solicitud a /appRoot/* se está reescribiendo para ser recogida por la app/webroot/index.php , donde se está analizando y se están invocando las correspondientes acciones del controlador. Esto se hace mediante estas directivas en .htaccess :

RewriteBase /appRoot

RewriteRule ^$ app/webroot/     [L]
RewriteRule (.*) app/webroot/$1 [L]

Ahora quiero excluir algunos directorios como static / de esta reescritura. Intenté con esto antes de Cake RewriteRules:

RewriteCond $1 ^(static|otherDir).*$ [NC]
RewriteRule (.*) - [L]

Funciona hasta el momento en que las solicitudes ya no se reescriben, pero ahora se omiten todas las solicitudes, incluso las solicitudes legítimas de Cake que no deberían coincidir con ^(static|otherDir).*$ .

Intenté varias variaciones de estas reglas pero no puedo hacer que funcionen de la manera que quiero.


Elimine la [L] de las reglas anteriores:

RewriteBase /appRoot

RewriteRule ^$ app/webroot/    
RewriteRule (.*) app/webroot/$1

[L] significa "Detener el proceso de reescritura aquí y no aplicar más reglas de reescritura".







mod-rewrite