
나는 이 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를 반환합니다. 또는 루트로 직접 돌아갑니다.
domain.com/about.html
URL을 다시 작성하고(so > domain.com/about
) 해당 URL을 리디렉션하여 /index.html
SPA로 작동하도록 할 수 있습니까 ?
답변1
nginx 구성을 동일하게 유지하고 Reach Router를 사용하여 Gatsby 내의 클라이언트 측에서 URL을 다시 작성함으로써 이 문제를 해결할 수 있었습니다.