Como faço para retornar um arquivo padrão no Nginx para todos os 404s dentro de um caminho específico?

1

Eu tenho uma pasta de localização que tem vários arquivos de linguagem (como JSON), e minha webapp tenta ler o idioma do navegador para buscar o arquivo JSON correspondente.

Em determinados cenários, o arquivo de idioma correspondente não existe e nginx retorna um 404 como deveria. No entanto, gostaria de retornar um redirecionamento temporário para o arquivo de idioma padrão.

Eu tentei isso, mas parece que não funciona. O que estou fazendo errado?

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

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

EDIT 2 : Então eu tentei ajustar o try_files um pouco assim.

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

Mas agora recebo um erro 500. Os logs dizem *35 rewrite or internal redirection cycle while internally redirecting .

EDIT 3 : Meu conf nginx completo está aqui - link

    
por GPX 20.02.2015 / 16:14

1 resposta

1

Use error_page

Para usar um determinado arquivo como a resposta 404 - use error_page :

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

Observe o uso de = para veicular /static/l10n/en-us.json como http 200.

    
por 20.02.2015 / 16:25

Tags