У меня были проблемы с этой конфигурацией 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?
Мне удалось решить эту проблему, сохранив ту же конфигурацию nginx и выполнив перезапись URL-адресов на стороне клиента в Gatsby с использованием маршрутизатора Reach Router.