我有一个结构如下的应用程序:
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/
。