Wie gebe ich in Nginx für alle 404-Fehler innerhalb eines bestimmten Pfads eine Standarddatei zurück?

Wie gebe ich in Nginx für alle 404-Fehler innerhalb eines bestimmten Pfads eine Standarddatei zurück?

Ich habe einen Lokalisierungsordner mit einer Reihe von Sprachdateien (als JSON) und meine Webanwendung versucht, die Sprache des Browsers zu lesen, um die entsprechende JSON-Datei abzurufen.

In bestimmten Szenarien existiert die entsprechende Sprachdatei nicht und nginx gibt wie vorgesehen eine 404-Fehlermeldung zurück. Ich möchte jedoch eine temporäre Weiterleitung zur Standardsprachdatei zurückgeben.

Ich habe das versucht, aber es scheint nicht zu funktionieren. Was mache ich falsch?

    location /static/l10n {
            try_files $uri @missing_language;
    }

    location @missing_language {
            rewrite ^ /static/l10n/en-us.json break;
    }

BEARBEITEN 2: Also habe ich versucht, es try_filesein wenig wie folgt zu optimieren.

    location /static/l10n {
            try_files $uri /static/l10n/en-us.json;
    }

Aber jetzt bekomme ich einen 500-Fehler. Die Protokolle sagen *35 rewrite or internal redirection cycle while internally redirecting:

BEARBEITEN 3: Meine vollständige Nginx-Konfiguration ist hier -https://gist.github.com/paambaati/9782e95b2e9af899b154

Antwort1

Verwendenerror_page

Um eine bestimmte Datei als 404-Antwort zu verwenden, verwenden SieFehlerseite:

location /static/l10n {
    error_page 404 = /static/l10n/en-us.json;
}

Beachten Sie die Verwendung =als /static/l10n/en-us.jsonhttp 200.

verwandte Informationen