Как вернуть файл по умолчанию в Nginx для всех ошибок 404 по определенному пути?

Как вернуть файл по умолчанию в Nginx для всех ошибок 404 по определенному пути?

У меня есть папка локализации, в которой находится множество языковых файлов (в формате JSON), и мое веб-приложение пытается прочитать язык браузера, чтобы получить соответствующий файл JSON.

В некоторых сценариях соответствующий языковой файл не существует, и nginx возвращает 404, как и должен. Однако я хотел бы вернуть временное перенаправление на языковой файл по умолчанию.

Я пробовал это, но, похоже, это не работает. Что я делаю не так?

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

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

ПРАВКА 2: Поэтому я попробовал try_filesнемного подправить вот так.

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

Но теперь я получаю ошибку 500. В журналах написано *35 rewrite or internal redirection cycle while internally redirecting.

ПРАВКА 3: Мой полный конфиг nginx здесь -https://gist.github.com/paambaati/9782e95b2e9af899b154

решение1

Использоватьerror_page

Чтобы использовать указанный файл в качестве ответа 404, используйтестраница_ошибки:

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

Обратите внимание на использование =для обслуживания /static/l10n/en-us.jsonhttp 200.

Связанный контент