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やなどのルートが含まれています。ただし、SPA ではなかった Web サイトの古いバージョンがあり、やdomain.com/about/some-pageなどのページがあり、これらはそれぞれ同等のコンテンツを提供します。domain.com/about.htmldomain.com/about.html#some-page

domain.com/about.htmlすでに世に出回っているサイトへの古いリンクが SPA の正しいルートにリダイレクトされるように、 >domain.com/aboutdomain.com/about.html#some-page> をリダイレクトできるようにしたいのですdomain.com/about/some-pageが、書き換えを作成しようとすると、すべて 404 が返されるか、ルートに直接戻されます。

URL を書き換え (つまりdomain.com/about.html> domain.com/about)、その URL を にリダイレクトして/index.htmlSPA として機能するようにすることは可能ですか?

答え1

nginx 構成をそのままにして、Reach Router を使用して Gatsby 内のクライアント側で URL の書き換えを行うことで、この問題を解決できました。

関連情報