Nginx

Nginx 在單頁應用程序中重寫 url

  • July 26, 2021

我一直有這個 nginx 配置的問題,在搜尋了這個站點之後,我想知道它是否可能。

我有一個非常簡單的單頁應用程序,具有以下路由:

server {
       listen 80 default_server;

       root /var/www/html;

       location / {
               try_files $uri $uri/ /index.html;
       }
}

此配置提供的 SPA(如果重要的話,是 Gatsby 站點)包含類似domain.com/aboutdomain.com/about/some-page提供特定內容的路由。但是,有一個舊版本的網站不是 SPA,它有類似domain.com/about.html和的頁面domain.com/about.html#some-page,這些頁面分別提供相同的內容。

我真的很希望能夠重定向domain.com/about.html>domain.com/aboutdomain.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 工作?

我能夠通過保持 nginx 配置相同並使用 Reach Router 在 Gatsby 的客戶端上重寫 URL 來解決這個問題。

引用自:https://serverfault.com/questions/1070478