如何在 Nginx 中为特定路径内的所有 404 返回默认文件?

如何在 Nginx 中为特定路径内的所有 404 返回默认文件?

我有一个本地化文件夹,其中包含一堆语言(作为 JSON)文件,我的 web 应用程序尝试读取浏览器的语言来获取相应的 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;
}

请注意用作=http /static/l10n/en-us.json200。

相关内容