O nginX parece ser o caminho a percorrer se você está tentando manter as regras de reescrita.
Isso pode ser feito assim:
if (!-e $request_filename) {
rewrite ^([_0-9a-zA-Z-]+)?(/.*) $2 break;
rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
rewrite ^ /index.php last;
}
Mas parece que o poder do nginX é ter regras menores e menos complexas, então essa pode ser a melhor maneira de substituir isso:
if (!-e $request_filename) {
rewrite ^ /index.php last;
}