Назад | Перейти на главную страницу

используя 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;
    }
}

Вам также необходимо проверить каталог в try_files если вы хотите, чтобы индекс каталога загружался или создавался автоматически.

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

По документация для try_files директива:

Можно проверить существование каталога, указав косую черту в конце имени, например $uri/

Другими словами, $uri означает "попробовать файл на заданном пути ", а $uri/ означает "попробовать каталог по заданному пути ", и именно последний вызывает автоматическую индексацию этого каталога.