
Ich möchte, dass nginx alle http://api.example.org/xyz
Anfragen umschreibt, damit sie tatsächlich example.org/api/xyz
im Hintergrund aufgerufen werden. Der schwierige Teil ist auch, dass ich CodeIgniter verwende. Anstatt also ein PHP-Skript unter /xyz/index.php zu laden, muss es mit dem XYZ-Controller auf /index.php von CodeIgniter verweisen. Im Moment habe ich es so eingerichtet:
if ($host = "api.example.org") {
rewrite ^(.*)$ http://example.org/api$1 permanent;
}
...aber das führt zu einer spürbaren Umleitung im Browser. Ich möchte, dass das Umschreiben nahtlos/hinter den Kulissen erfolgt. Also habe ich Folgendes versucht:
if ($host = "api.example.org") {
rewrite ^(.*)$ /api$1 last;
}
Aber das gibt mir den Fehler „Keine Eingabedatei angegeben“. :( Hat schon mal jemand versucht, eine Subdomäne in einen Codeigniter-Controller auf Nginx umzuschreiben?
Danke!
Antwort1
Ich habe den ganzen Tag damit verbracht, das herauszufinden, und am Ende war es wirklich einfach, pfui. Was ich letztendlich gemacht habe, war:
location ~* \.php$ {
...
if ($host ~ ^api\.) {
set $api "/api";
}
fastcgi_param REQUEST_URI $api$request_uri;
...
}
Juhu! Wenn irgendjemand daran etwas möglicherweise Falsches findet, lasst es mich bitte wissen! Scheint aber zu funktionieren.