rewriterule mod_rewrite htaccess examples ejemplos mod-rewrite

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.