Nginx reescribe las URL dentro de una aplicación de una sola página

Nginx reescribe las URL dentro de una aplicación de una sola página

He tenido problemas con esta configuración de nginx y, después de recorrer este sitio, me pregunto si es posible.

Tengo una aplicación de una sola página muy simple con la siguiente ruta:

server {
        listen 80 default_server;

        root /var/www/html;

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

El SPA (un sitio de Gatsby, si eso importa) servido por esta configuración contiene rutas como domain.com/abouty domain.com/about/some-pageque ofrecen contenido específico. Sin embargo, existe una versión anterior del sitio web que no era un SPA y tiene páginas como domain.com/about.htmly domain.com/about.html#some-page, que ofrecen contenido equivalente, respectivamente.

Realmente me gustaría poder redirigir domain.com/about.html> domain.com/abouty domain.com/about.html#some-page> domain.com/about/some-pagepara que los enlaces antiguos al sitio que están en el mundo todavía vayan a la ruta correcta del SPA, pero todos mis intentos de crear reescrituras simplemente devuelven un 404 o directamente de regreso a la raíz.

¿Es posible reescribir la URL (entonces domain.com/about.html> domain.com/about) y también redirigir esa URL para /index.htmlque funcione como un SPA?

Respuesta1

Pude resolver este problema manteniendo la misma configuración de nginx y reescribiendo la URL en el lado del cliente dentro de Gatsby usando Reach Router.

información relacionada