Показывать индекс из подпапки в nginx

У меня есть приложение со следующей структурой:

app/
app/index.html
app/foo.js
app/assets/
file.php
anotherfile.php
etc.php

С Apache я бы поместил в .htaccess следующее:

RewriteCond %{REQUEST_URI} !\/app\/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app/$1 [QSA]

Другими словами, если URI запроса не содержит / app / и запрошенный файл не является фактическим файлом, перепишите его в app . Таким образом, если кто-то перейдет на https: //my.example.url/#/login , он получит https: //my.example.url/app/index.html#/login. не замечая.

Я исследую переход на nginx и пытаюсь воспроизвести это поведение. То, что у меня есть, пока не работает:

location ~ \/app\/ {
        try_files $uri $uri/ =404;
}

location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files app/$uri $uri $uri/ =404;
}

Я ожидал, что он будет искать файл index.html в /, но не найти его, поскольку его там нет, а затем искать его в папке приложения, но вместо этого nginx просто выдает ошибку 403 запрещено, так как у меня отключен автоиндекс .

Есть идеи?

0
задан 16 December 2019 в 16:31
1 ответ

Я предполагаю, что Вы отсутствуете

index index.html;

директива в Вашей конфигурации. Этот говорит, что nginx для попытки добавляют index.html для URIs, которые заканчиваются наклонной чертой, как /app/.

0
ответ дан 30 December 2019 в 00:11

Теги

Похожие вопросы