Estoy teniendo un día difícil con los métodos de manipulación de .htaccess de Apache y parece que me topé con una pared. Mi código tiene la intención de redirigir todas las solicitudes a /index.php excepto las solicitudes de archivos, así de simple. He estado leyendo bastante los ejemplos y la documentación de otras personas sobre todas las declaraciones y opciones relacionadas para replicar el comportamiento deseado.
Hasta ahora este es el código:
RewriteEngine on # If a requested file exists, rewrite route to the file RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ %{REQUEST_FILENAME} [L] # If a requested file does not exist, rewrite route to index.php, works even if none was requested RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ /index.php [L,QSA] Hasta ahora, esto funciona correctamente, puedo crear rutas virtuales con mis controladores PHP y aún así validar consultas gracias a QSA .
Sin embargo, lo inesperado se produce cuando decidí registrar REQUEST_URI para cada vez /index.php se llamaba a /index.php, y descubrí que al intentar acceder a un archivo que NO existe, está registrando una llamada a /index.php , y en este punto no conozco ninguna técnica para aplicar una condición a este caso.
Mi pregunta en una sola oración es: ¿Cómo puedo implementar tal RewriteCond que valide si lo que se solicita es un archivo, en lugar de si existe?
Además, dado que es la primera vez que controlo manualmente las solicitudes de URI, ¿existen medidas de seguridad o sugerencias sólidas que deba tener en cuenta al usar estas reglas en .htaccess ?