Make nginx serve index.html se o url solicitado não for encontrado sem usar error_page

2

Eu tenho o nginx configurado para exibir um aplicativo React.js de página única como conteúdo estático. O react-router manipula o roteamento no navegador.

Para permitir que os usuários insiram todos os URLs (não apenas o domínio example.com , mas também URLs como example.com/some/path , example.com/some/other/path , etc.) diretamente na barra de endereço, eu estou fazendo

error_page 404 /index.html

Isso funciona perfeitamente bem em todos os lugares, exceto no Internet Explorer. IE mostra página 404 para isso.

Como faço para configurar o nginx, de modo que ele atenda index.html, se o caminho da solicitação não puder ser correspondido a um arquivo no diretório raiz.

Obrigado.

    
por Mir Nazim 28.04.2016 / 21:35

2 respostas

5

Este é um trabalho para try_files .

try_files $uri /index.html;

$uri carregará todos os recursos estáticos, se estiverem presentes e acessíveis; para qualquer URL inacessível, /index.html será exibido (com 200).

    
por 29.04.2016 / 03:47
0

Como solução alternativa, você pode usar

server {
    listen       80;
    server_name  www.example.net;

    root /vhosts/default/public_html;

    error_page 404 =200 /index.html;

    location / {
        index index.html;
    }
}

Is it possible that IE showing you cached version?

parece um comportamento padrão para o IE. Pelo menos para o IE11 no Windows 7

P.S. Acontece que o seu index.html DEVE ter 512 bytes

    
por 28.04.2016 / 22:20

Tags