
我一直遇到這個 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 (so domain.com/about.html
> domain.com/about
) 並重定向該 URL,/index.html
使其作為 SPA 工作?
答案1
我能夠透過保持 nginx 配置相同並使用 Reach Router 在 Gatsby 的客戶端上進行 URL 重寫來解決這個問題。