javascript redirect - nginx:envíe todas las solicitudes a una sola página html




all index (5)

Usando nginx, quiero preservar la url, pero en realidad cargo la misma página pase lo que pase. Utilizaré la url con History.getState() para enrutar las solicitudes en mi aplicación de 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.


Answers

La forma correcta sería:

location / {
    rewrite (.*) base.html last;
}

El uso de last hará que nginx encuentre un nuevo bloque de location adecuado de acuerdo con el resultado de la reescritura.

try_files es también un enfoque perfectamente válido para este problema.


Usar solo try_files no funcionó para mí, causó un error de reescritura o ciclo de redirección 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:

root /var/www/mysite;

location / {
    try_files $uri /base.html;
}

location = /base.html {
    expires 30s;
}

Su reescritura original casi debería funcionar. No estoy seguro de por qué redirigiría, pero creo que lo que realmente quieres es solo

rewrite ^ /base.html break;

Debería poder poner eso en una ubicación o directamente en el servidor.


Creo que esto lo hará por ti:

location / {
    try_files /base.html =404;
}

Similar a la respuesta de @ Tandroid pero una solución más general:

const putItemsFirst = ({ findFunction, array }) => [
    ...array.filter(findFunction), 
    ...array.filter(signer => !findFunction(signer)),
]; 

Puede ser utilizado como este

putItemsFirst({ 
    array: ["email","role","type","name"], 
    findFunction: item => item === 'role',
})

Algo similar a esto es lo que terminé usando,





javascript nginx history