Bueno, tal y como lo hablamos por el mésenyer:
El problema del error 500 viene de que la regla (los RewriteCond) dice
"si no es archivo, ni es carpeta..."
Si la petición es por
www.sitio.com/cualquiercosa
y ese archivo no existe, el .htaccess le dice a apache que redirija a cualquiercosa.php... que tampoco existe.
Entonces, habrá que decirle a Apache aplique la regla únicamente si el archivo PHP correspondiente existe:
RewriteCond %{SCRIPT_FILENAME}.php -f
Como en el caso de que el archivo PHP no exista, no se hace nada, el sistema sigue su flujo normal, es decir, tirar un lindo 404
Saludos.