Назад | Перейти на главную страницу

Nginx: обслуживать index.html в ближайшей родительской папке

Я запускаю несколько SPA в отдельных папках вместе с некоторыми статическими файлами. Структура следующая:

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

Ожидаемое поведение:

Короче говоря, я хочу, чтобы nginx попробовал следующие пути по порядку:

Есть ли способ добиться этого без указания правил для каждого каталога SPA?

Вы можете рекурсивно переписать URI, каждый раз удаляя путь к каталогу, пока index.html файл находится. Это будет внутренний цикл, и никакого внешнего перенаправления не будет.

Например:

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