一起使用nginx的try_files和autoindex

我有以下服务器configuration:

server { listen 80; server_name _; root /var/www/; location /calendars/ { autoindex on; try_files $uri.ics $uri =404; } } 

如果期望得到访问http://example.com/calendars/autoindex页面,但是我得到一个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; } } 

如果你想加载或者自动生成目录索引,你还需要检查try_files的目录。

 try_files $uri.ics $uri $uri/ =404; 

根据try_files指令的文档 :

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

换句话说, $uri意思是“在给定的path上尝试一个文件 ”,而$uri/意味着“在给定的path上尝试一个目录 ”,而后者是导致自动索引该目录的原因。