Usando o nginx, quero preservar o URL, mas na verdade carregue a mesma página, não importa o quê. Usarei o URL com History.getState()
para rotear as solicitações no meu aplicativo javascript. Parece que deve ser uma coisa simples de fazer?
location / {
rewrite (.*) base.html break;
}
funciona, mas redireciona o url? Ainda preciso do URL, só quero sempre usar a mesma página.
javascript
nginx
history
prisma de tudo
fonte
fonte
Respostas:
Eu acho que isso fará isso por você:
fonte
try_files '' /base.html;
(string vazia como o primeiro argumento paratry_files
) evita a pesquisa de um arquivo chamado$uri
.try_files '' /base.html;
me deu um problema de redirecionamento e um erro interno do servidor, mas modificá-lo para corrigi-lotry_files '' /base.html =404;
, se isso ajudar alguém.Usar apenas
try_files
não funcionou para mim - causou um ciclo de reescrita ou redirecionamento interno erro de nos meus logs.Os documentos do Nginx tinham alguns detalhes adicionais:
http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
Então, acabei usando o seguinte:
fonte
try_files '' /base.html =404;
(veja acima)location = /base.html { expires 30s }
parte.Sua reescrita original deve quase funcionar. Não sei por que isso seria redirecionado, mas acho que o que você realmente quer é apenas
Você deve colocá-lo em um local ou diretamente no servidor.
fonte
Isso funcionou para mim:
Isso me permitiu criar um URL abrangente para um aplicativo de página única javascript. Todos os arquivos estáticos, como css, fontes e javascript criados por
npm run build
, serão encontrados se estiverem no mesmo diretório queindex.html
.Se os arquivos estáticos estiverem em outro diretório, por algum motivo, você também precisará de algo como:
fonte
Isso funcionou para mim:
fonte
A maneira correta seria:
O uso
last
fará com que o nginx encontre um novolocation
bloco adequado de acordo com o resultado da reescrita.try_files
também é uma abordagem perfeitamente válida para esse problema.fonte