Nginx:在最近的父文件夹中提供 index.html

Nginx:在最近的父文件夹中提供 index.html

我正在单独的文件夹中运行多个 SPA,以及一些静态文件。结构如下:

|
|- index.html
|- foobar.html
|---- SPA1/
|     |- index.html
|     |---- SPA1_1/
|           |- index.html
|---- SPA2/
      |- index.html

预期行为是:

  • /SPA1/SPA1_1/foo/bar为所有人服务SPA1/SPA1_1/index.html
  • SPAx/foo/bar为所有人服务SPAx/index.html
  • 搭配/not_exist/index.html
  • 搭配/foobar.html/foobar.html

简而言之,我希望 nginx 按顺序尝试以下路径:

  • $uri
  • $uri最亲近的父母

有没有办法可以在不为每个 SPA 目录指定规则的情况下实现这一点?

答案1

您可以通过每次删除目录路径来递归重写 URI,直到index.html找到文件为止。这将是一个内部循环,不会发生任何外部重定向。

例如:

location / {
    try_files $uri $uri/index.html @rewrite;
}
location @rewrite {
    rewrite ^(.*)/.+ $1/ last;
}

相关内容