Nginx переписывает URL-адреса в одностраничном приложении

Nginx переписывает URL-адреса в одностраничном приложении

У меня возникли проблемы с конфигурацией nginx, и после изучения этого сайта я задаюсь вопросом, возможно ли это вообще.

У меня есть очень простое одностраничное приложение со следующей маршрутизацией:

server {
        listen 80 default_server;

        root /var/www/html;

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

SPA (сайт Gatsby, если это имеет значение), обслуживаемый этой конфигурацией, содержит маршруты типа domain.com/aboutи domain.com/about/some-page, которые обслуживают определенный контент. Однако есть старая версия веб-сайта, которая не была SPA, и в ней есть страницы типа domain.com/about.htmlи domain.com/about.html#some-page, и они обслуживают эквивалентный контент, соответственно.

Мне бы очень хотелось иметь возможность перенаправлять domain.com/about.html> domain.com/aboutи domain.com/about.html#some-page> domain.com/about/some-page, чтобы старые ссылки на сайт, которые уже находятся в открытом доступе, по-прежнему вели на правильный маршрут SPA, но все мои попытки создать перезаписи либо просто возвращают ошибку 404, либо направляют обратно в корень.

Можно ли одновременно переписать URL (так domain.com/about.html> domain.com/about) и перенаправить этот URL /index.htmlтак, чтобы он работал как SPA?

решение1

Мне удалось решить эту проблему, сохранив конфигурацию nginx прежней и выполнив перезапись URL-адресов на стороне клиента в Gatsby с помощью Reach Router.

Связанный контент