
Gostaria que o nginx reescrevesse quaisquer http://api.example.org/xyz
solicitações para realmente ligar example.org/api/xyz
nos bastidores. A parte complicada também é que estou usando o CodeIgniter, então, em vez de carregar um script php em /xyz/index.php, precisarei dele para fazer referência ao /index.php do CodeIgniter com o controlador XYZ. No momento estou configurado assim:
if ($host = "api.example.org") {
rewrite ^(.*)$ http://example.org/api$1 permanent;
}
... mas isso causa um redirecionamento perceptível no navegador. Quero que a reescrita seja perfeita/ocorre nos bastidores. Então eu tentei:
if ($host = "api.example.org") {
rewrite ^(.*)$ /api$1 last;
}
Mas isso me dá um erro "Nenhum arquivo de entrada especificado". :( Alguém já tentou reescrever um subdomínio em um controlador codeigniter no nginx antes?
Obrigado!
Responder1
Passei o dia todo tentando descobrir isso e acabou sendo muito simples, ugh. O que acabei fazendo foi:
location ~* \.php$ {
...
if ($host ~ ^api\.) {
set $api "/api";
}
fastcgi_param REQUEST_URI $api$request_uri;
...
}
Uau! Se alguém vir algo potencialmente errado sobre isso, por favor, deixe-me saber! Parece estar funcionando.