Con nginx, quiero preservar la url, pero en realidad cargar la misma página sin importar qué. Usaré la URL con History.getState()
para enrutar las solicitudes en mi aplicación javascript. Parece que debería ser algo simple de hacer?
location / {
rewrite (.*) base.html break;
}
funciona, pero redirige la url? Todavía necesito la URL, solo quiero usar siempre la misma página.
javascript
nginx
history
prismatodo
fuente
fuente
Respuestas:
Creo que esto lo hará por ti:
fuente
try_files '' /base.html;
(cadena vacía como primer argumento paratry_files
) evita la búsqueda de un archivo llamado$uri
.try_files '' /base.html;
me dio un problema de redirección y un error interno del servidor, pero modificarlo paratry_files '' /base.html =404;
solucionarlo, si ayuda a alguien.El uso simplemente
try_files
no funcionó para mí: causó un error de reescritura o un ciclo de redireccionamiento interno en mis registros.Los documentos de Nginx tenían algunos detalles adicionales:
http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
Así que terminé usando lo siguiente:
fuente
try_files '' /base.html =404;
(ver arriba)location = /base.html { expires 30s }
parte.Su reescritura original casi debería funcionar. No estoy seguro de por qué estaría redirigiendo, pero creo que lo que realmente quieres es simplemente
Debería poder colocar eso en una ubicación o directamente en el servidor.
fuente
Esto funcionó para mí:
Esto me permitió crear una URL general para una aplicación javascript de una sola página. Todos los archivos estáticos como CSS, fuentes y JavaScript creados por
npm run build
se encontrarán si están en el mismo directorio queindex.html
.Si los archivos estáticos estuvieran en otro directorio, por alguna razón, también necesitaría algo como:
fuente
Esto funcionó para mí:
fuente
La forma correcta sería:
Usar
last
hará que nginx encuentre un nuevo adecuadolocation
bloque acuerdo con el resultado de la reescritura.try_files
También es un enfoque perfectamente válido para este problema.fuente