analizá esto
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
Eso va a hacer que cualquier archivo, sea o no php, busque un archivo del mismo nombre con la extensión php,
algo.css --> algo.css.php, lo mismo para el resto, incluso el de error, entonces vas a producir un bucle infinito porque no se encuentra nada
La solución es, que tus condicionales sean
Código Apache:
Ver originalRewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_FILENAME} !-d
con lo que solo se lo estás aplicando a los .php
Saludos