从 nginx 中的子文件夹提供索引

从 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 文件,由于它不在那里而找不到它,然后在 app 文件夹中查找它,但是由于我已经下车,所以 nginx 只会抛出 403 禁止错误autoindex

有任何想法吗?

答案1

我猜你失踪了

index index.html;

指令。该指令告诉 nginx 尝试附加index.html以斜杠结尾的 URI,例如/app/

相关内容