La reescritura de htaccess provoca un error 500 en lugar de 404

Recientemente he añadido este pequeño código a mi.htaccess expediente:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]

Ok, entiendo lo que está pasando aquí, creo. Este fragmento de código para eliminar las extensiones de archivo PHP provoca un bucle si no se encuentra el documento. Este bucle provoca un error de 500 servidores en lugar del (correcto) 404. Desafortunadamente, tengo muy poca comprensión de lo que realmente están haciendo estas reescrituras, por lo que no sé cómo reescribirlo para desencadenar este redireccionamiento si el documento existe.

He leído un poco y no estoy seguro de lo que Apache considera un archivo "regular". Quiero decir que funciona, pero ¿por qué la primera línea no sería-f en lugar de!-f? Es-u ¿La única manera de lograr esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta