
この 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.html
domain.com/about.html#some-page
domain.com/about.html
すでに世に出回っているサイトへの古いリンクが SPA の正しいルートにリダイレクトされるように、 >domain.com/about
とdomain.com/about.html#some-page
> をリダイレクトできるようにしたいのですdomain.com/about/some-page
が、書き換えを作成しようとすると、すべて 404 が返されるか、ルートに直接戻されます。
URL を書き換え (つまりdomain.com/about.html
> domain.com/about
)、その URL を にリダイレクトして/index.html
SPA として機能するようにすることは可能ですか?
答え1
nginx 構成をそのままにして、Reach Router を使用して Gatsby 内のクライアント側で URL の書き換えを行うことで、この問題を解決できました。