一起使用 nginx try_files 和 autoindex

Tyi*_*ilo 2 rewrite nginx directoryindex

我有以下服务器配置:

server {
    listen 80;
    server_name _;

    root /var/www/;

    location /calendars/ {
        autoindex on;
        try_files $uri.ics $uri =404;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果希望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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ton 7

try_files如果您希望加载或自动生成目录索引,您还需要检查目录。

try_files $uri.ics $uri $uri/ =404;
Run Code Online (Sandbox Code Playgroud)

根据指令文档try_files

可以通过在名称末尾指定斜杠来检查目录的存在,例如 $uri/

换句话说,$uri表示“在给定路径上尝试一个文件”,而$uri/表示“在给定路径上尝试一个目录”,后者是导致该目录自动索引启动的原因。