我有以下服务器配置:
server {
listen 80;
server_name _;
root /var/www/;
location /calendars/ {
autoindex on;
try_files $uri.ics $uri =404;
}
}
如果期望autoindex
在访问时获取该页面http://example.com/calendars/
,但我404 File not found
却收到错误。
我希望服务器执行类似以下伪代码的操作:
if($uri is directory) {
if(one of index pages exists in directory) {
show index page;
} else {
show autoindex page;
}
} else {
if($uri.ics exists) {
show $uri.ics;
} else if($uri exists) {
show $uri;
} else {
show 404 page;
}
}
答案1
try_files
如果您希望加载或自动生成目录索引,您还需要检查目录。
try_files $uri.ics $uri $uri/ =404;
可以通过在名称末尾指定斜杠来检查目录的存在,例如
$uri/
换句话说,$uri
意味着“尝试文件在给定的路径上”,而$uri/
意味着“尝试目录在给定的路径上”,后者导致该目录的自动索引启动。