Elimine las extensiones .php con .htaccess sin romper DirectoryIndex

Tengo la siguiente reescritura en mi archivo .htaccess que elimina la extensión .php de los archivos, convirtiendo, por ejemplo, so.com/question.php en so.com/question .

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 

Sin embargo, esto también rompe el comportamiento predeterminado de DirectoryIndex, en el que al escribir el directorio se redirigirá al archivo de índice en la carpeta, por ejemplo so.com/answer muestra so.com/answer/index.php

Simplemente combinando el código anterior con DirectoryIndex index.php no se logran ambos resultados.

¿Alguien puede ayudarme a combinar estas dos funciones o reescribir el código para excluir los archivos index.php, lo que lograría el mismo resultado?

Estoy pensando que solo necesita verificar que el archivo exista antes de hacer la reescritura, de esa forma dejará intactos los comportamientos de 404 y del índice de directorio:

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

(no probado)

 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA] 

verificar archivos y carpetas y también, agregar RewriteBase /