Nginx rewrite urls within a single page app

У меня были проблемы с этой конфигурацией 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?

0
задан 24 July 2021 в 01:12
1 ответ

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

0
ответ дан 28 July 2021 в 14:34

Теги

Похожие вопросы