RewriteRule que preserva os parâmetros GET

O que há de errado com essa regra de reescrita?

RewriteRule ^api/(.+)$ api/index.php?url=$1 [L] 

Eu simplesmente quero que “index.php? Url =” seja adicionado após api / e antes do resto dos parâmetros get.

 api/image/upload&arg1=1&text=lorem+ipsum 

para

 api/index.php?url=image/upload&arg1=1&text=lorem+ipsum 

O que há de errado com (. +) Para obter tudo após api /?

O regex no RewriteRule é executado somente na parte do caminho do URL, não nos parâmetros de consulta. Felizmente, há o sinalizador [QSA] para preservar os parâmetros de consulta existentes.

Você está fazendo algo para impedir a recursion infinita?

  RewriteRule ^api/(.+)$ api/index.php?url=$1 [R=301,L] 

ou algum equivalente

Eu acho que você deve escrever seu nome de domínio antes das coisas de regex. Como isso:

 RewriteRule ^(.+).com/api/(.*)$ "$1.com/api/index.php?url=$2" [R=301,L]