2011-03-18 19 views

Respuesta

48

Apache de RewriteCond como hemos ll como la directiva RewriteRule apoyar el signo de exclamación para especificar un patrón no coincidente: '!'

Usted puede prefijar la cadena patrón con un carácter (signo de exclamación) a especifique un patrón no coincidente.

Esto debería funcionar:

RewriteCond %{REQUEST_URI} !^/forums.* 
RewriteRule !\.(js|gif|css|jpg|png)$ /index.php [L] 

-> redirigir todas las solicitudes que no empiece con foros y no terminan con los que figuran basta a index.php

+10

Vale la pena señalar que el orden de el procesamiento es (1) revise el RewriteRule para un patrón coincidente, luego, solo si coincide: (2) regrese al primer RewriteCond asociado y verifique si coincide. (y continúe con cualquier RewriteConds posterior). Por lo tanto, en el ejemplo anterior, la descripción cronológica es Para todas las solicitudes que no terminan en (.js, .gif, .css, .jpg, .png) ... que tienen una URL que no comienza con "/forums " ... reenviar a index.php (y, por [L], ignorar cualquier RewriteRules posterior que de lo contrario podría afectar la solicitud). HTH :) – cweekly

+0

@cweekly Este parece ser el caso de [IIS mod_rewrite ] (http://www.micronovae.com/ModRewrite/ref/RewriteCond.html) - ¿Esto también es cierto para apache mod_rewrite? – marapet

+0

[La regla solo se usa si el estado actual del URI coincide con su patrón y si se cumplen las condiciones.] (Http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond) Entonces, ¿por qué importa el orden? –

Cuestiones relacionadas