mod-rewrite - mod_rewrite - rewriterule ejemplos
mod_rewrite: ¿qué hace este RewriteRule? (1)
Dadas estas condiciones (sé lo que significan / hacen):
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
¿Qué hace la primera regla? ¿Para qué es esa carrera solitaria?
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
He estado usando esto desde hace bastante tiempo en combinación con Zend Framework, pero nunca obtuve lo que hace la primera regla exactamente.
La directiva RewriteCond
simplemente describe una condición adicional para una directiva RewriteRule
. Así que RewriteCond
siempre debe estar asociado con RewriteRule
.
En su caso, los tres RewriteCond
probablemente pertenecen a la primera RewriteRule
como esta:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
Ahora esta regla se aplica si el patrón de RewriteRule
coincide con la URL de solicitud actual (ruta de acceso por directorio eliminada antes) y si se cumple la condición.
En este caso, la condición solo es verdadera si al mapear la URL de solicitud al sistema de archivos coincide con un archivo existente con un tamaño de archivo mayor que 0 ( -s
), o un enlace simbólico ( -l
) o un directorio ( -d
) . Por lo tanto, su regla se aplicará a cualquier URL ( ^.*$
Que coincida con cualquier cosa) que pueda correlacionarse con algo existente en su sistema de archivos. La sustitución -
solo significa no cambiar nada. Y el NC ( ningún caso , caso insensible, inútil en este contexto) y L (última regla si se aplica) son flags que modifican el patrón, el reemplazo o la ejecución de la regla.