如何在Nginx中返回默认文件中的特定path中的所有404?

我有一个本地化的文件夹,有一堆语言(如JSON)文件,我的Web应用程序试图读取浏览器的语言来获取相应的JSON文件。

在某些情况下,相应的语言文件不存在,并且nginx应该返回404。 但是,我想返回一个临时的redirect到默认的语言文件。

我试过这个,但似乎没有工作。 我究竟做错了什么?

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 conf在这里 – https://gist.github.com/paambaati/9782e95b2e9af899b154

使用error_page

要使用给定的文件作为404响应 – 请使用error_page :

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

请注意使用=来将/static/l10n/en-us.json作为http 200。