У меня есть приложение со следующей структурой:
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 запрещено, так как у меня отключен автоиндекс
.
Есть идеи?
Я предполагаю, что Вы отсутствуете
index index.html;
директива в Вашей конфигурации. Этот говорит, что nginx для попытки добавляют index.html
для URIs, которые заканчиваются наклонной чертой, как /app/
.