Я бы хотел, чтобы nginx переписал любой http://api.example.org/xyz
запросы на звонок example.org/api/xyz
за кулисами. Сложность также в том, что я использую CodeIgniter, поэтому вместо того, чтобы загружать скрипт php в /xyz/index.php, мне нужно, чтобы он ссылался на /index.php CodeIgniter с контроллером XYZ. Прямо сейчас у меня это настроено так:
if ($host = "api.example.org") {
rewrite ^(.*)$ http://example.org/api$1 permanent;
}
... но это вызывает заметное перенаправление в браузере. Я хочу, чтобы переписывание было бесшовным / происходило за кадром. Итак, я попробовал:
if ($host = "api.example.org") {
rewrite ^(.*)$ /api$1 last;
}
Но это дает мне ошибку «Не указан входной файл». :( Кто-нибудь раньше пробовал переписать поддомен в контроллер codeigniter на nginx?
Спасибо!
Я потратил весь день, пытаясь понять это, и в итоге все оказалось очень просто, тьфу. В итоге я сделал следующее:
location ~* \.php$ {
...
if ($host ~ ^api\.) {
set $api "/api";
}
fastcgi_param REQUEST_URI $api$request_uri;
...
}
Ву! Если кто-то видит в этом что-то потенциально неправильное, пожалуйста, дайте мне знать! Хотя вроде работает.