同时使用 nginx try_files 和 autoindex

同时使用 nginx try_files 和 autoindex

我有以下服务器配置:

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;

根据try_files指令文件

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

换句话说,$uri意味着“尝试文件在给定的路径上”,而$uri/意味着“尝试目录在给定的路径上”,后者导致该目录的自动索引启动。

相关内容