È errata la logica qui:
un file che non esiste è diverso da una file o diverso da una cartella realmente esistenticodice:RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d
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