вторник, 11 апреля 2023 г.

Apache. Отображение длинных русских названий в директории с помощью Indexes

В настройках по умолчанию, если пользователь обратиться к директории web-сервера по http и в этой директории не будет индексного файла index.html (index.php), то Apache отобразит перечень файлов и каталогов, содержащихся в каталоге. Это поведение предписывается директивой Indexes.
В настройках по умолчанию данная директива присутствует в файле /etc/httpd/conf/httpd.conf в разделе <Directory "/var/www/html">:
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>


Но по умолчанию русские названия файлов будут выглядеть кракозяброй так:


Что бы русские буквы отображались правильно, необходимо использовать дополнительные директивы IndexOptions Charset=UTF-8
То есть привести настройки к виду:
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    IndexOptions Charset=UTF-8
    AllowOverride None
    Require all granted
</Directory>

 

После рестарта Apache русские буквы отображаются, но имя файла обрезается:

Что бы имя файла не обрезалось необходимо использовать еще одну опцию «NameWidth=*». Конфигурацию настроек каталога в файле /etc/httpd/conf/httpd.conf приводим к виду:
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    IndexOptions Charset=UTF-8 NameWidth=*
    AllowOverride None
    Require all granted
</Directory>

 

Теперь все отображается корректно: