Reescrita de htaccess causa 500 erro em vez de 404

Eu recentemente adicionei este pequeno código ao meu.htaccess Arquivo:

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

Ok, eu entendo o que está acontecendo aqui, eu acho. Este pequeno código para remover extensões de arquivo PHP causa um loop se o documento não for encontrado. Esse loop causa um erro de 500 servidores em vez do 404 (correto). Infelizmente, tenho muito pouco entendimento do que essas reescritas estão realmente fazendo, portanto, não sei como reescrevê-lo para acionar esse redirecionamento apenas se o documento existir.

Eu fiz algumas leituras e não tenho certeza do que o Apache considera um arquivo "regular". Quer dizer, funciona, mas por que a primeira linha não seria-f ao invés de!-f? É-u a única maneira de conseguir isso?

questionAnswers(3)

yourAnswerToTheQuestion