我有以下服务器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上尝试一个目录 ”,而后者是导致自动索引该目录的原因。