鉴于此文件夹结构:
root folder
+ default
+ settings1.txt
+ settings2.txt
...
+ settingsN.txt
+ user00001
+ settings1.txt
...
...
+ userN
+ settings1.txt
...
这个示例网址:
domain.com/user00009/settings1.txt
或者
domain.com/xavi/somefile.txt
我想写一个规则,让我这样做:
folder exists ? check file : 404
file exists ? serve users file : serve default file
我尝试使用 try_files 但我想我只能使用 $uri 我得到整个网址,如果我可以使用 slugs ( $1 = user00009 & $2 = settings1.txt ) 会很棒
那么也许我可以放:
location / {
root /...
try_files $1/$2 default/$2 =404;
}
任何的想法?
注意:我知道我可以从 nginx 外部(在本例中为 django )提供文件服务,但我试图加快速度
最佳答案
location ~ ^(/[^/]+)(/.+)$ {
root ...;
if (!-d "$document_root$1") {
return 404;
}
try_files $1$2 /default$2 =404;
}
关于Nginx try_files(文件夹+文件)回退,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286341/