Rimuovi le estensioni .php con .htaccess senza interrompere DirectoryIndex

Ho la seguente riscrittura nel mio file .htaccess che rimuove l’estensione .php dai file, convertendo per esempio so.com/question.php a so.com/question .

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

Tuttavia, ciò anche rompe il comportamento di DirectoryIndex predefinito, in cui semplicemente digitando la directory si reindirizzerà al file di indice nella cartella, ad esempio so.com/answer display so.com/answer/index.php

Semplicemente combinando il codice sopra con DirectoryIndex index.php non si ottengono entrambi i risultati.

Qualcuno può aiutarmi a combinare queste due funzioni, o riscrivere il codice per escludere i file index.php, che otterrebbero lo stesso risultato?

Sto pensando che devi solo verificare che il file esista prima di eseguire la riscrittura, in questo modo lascerai intatti i comportamenti 404 e directoryindex:

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

(non testato)

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

verificare i file e la cartella e inoltre, aggiungere RewriteBase /