È errata la logica qui:
codice:
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
un file che non esiste è diverso da una file o diverso da una cartella realmente esistenti
un file che esiste invece non sarà mai una cartella e quindi la seconda cond fa eseguire la rule.
Devi cambiare or in and o ometterlo direttamente
codice:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d