11
RewriteCond %{REQUEST_FILENAME} !-d
Diese Bedingung sorgt dafür, dass die folgende Regel nicht auf existierende Verzeichnisse angewandt wird.
Ein Direktaufruf im Browser von https://example.com/index.php?post=foo funktioniert?
Beim zweiten Regelsatz könntest du zur Sicherheit auch noch den Slash als enthaltenes Zeichen ausklammern:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\./]+)$ $1.php [NC,L]