RewriteRule que conserva los parámetros GET

¿Qué está mal con esta regla de reescritura?

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

Simplemente quiero que “index.php? Url =” se agregue después de la API / y antes del rest de los parámetros de obtención.

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

a

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

¿Qué está mal con (. +) Para obtener todo después de api /?

La expresión regular en RewriteRule solo se ejecuta en la parte de la ruta de la URL, no en los parámetros de consulta. Afortunadamente, existe el indicador [QSA] para preservar los parámetros de consulta existentes.

¿Estás haciendo algo para detener la recursión infinita?

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

o algún equivalente

Creo que debes escribir tu nombre de dominio antes de las expresiones regulares. Me gusta esto:

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