
Me gustaría que nginx reescribiera cualquier http://api.example.org/xyz
solicitud para llamar example.org/api/xyz
detrás de escena. La parte complicada también es que estoy usando CodeIgniter, por lo que en lugar de cargar un script php en /xyz/index.php, lo necesitaré para hacer referencia a /index.php de CodeIgniter con el controlador XYZ. Ahora mismo lo tengo configurado así:
if ($host = "api.example.org") {
rewrite ^(.*)$ http://example.org/api$1 permanent;
}
...pero eso provoca que se produzca una redirección notable en el navegador. Quiero que la reescritura sea fluida y se produzca detrás de escena. Entonces lo intenté:
if ($host = "api.example.org") {
rewrite ^(.*)$ /api$1 last;
}
Pero eso me da el error "No se ha especificado ningún archivo de entrada". :( ¿Alguien ha intentado reescribir un subdominio en un controlador codeigniter en nginx antes?
¡Gracias!
Respuesta1
Pasé todo el día tratando de resolver esto y terminó siendo realmente simple, uf. Lo que terminé haciendo fue:
location ~* \.php$ {
...
if ($host ~ ^api\.) {
set $api "/api";
}
fastcgi_param REQUEST_URI $api$request_uri;
...
}
¡Cortejar! Si alguien ve algo potencialmente incorrecto en esto, ¡hágamelo saber! Aunque parece estar funcionando.