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