我一直遇到这个 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(所以domain.com/about.html
> domain.com/about
)并将该 URL 重定向到/index.html
以使其作为 SPA 工作?
答案1
我能够通过保持 nginx 配置相同并使用 Reach Router 在 Gatsby 中的客户端执行 URL 重写来解决此问题。