новости
статьи
.sysadmin

украшаем листинг каталога в Apache

Недавно в одном блоге попался мне пост с интригующим названием CSS Styling Apache Directory Listings. Автор поста получил очень интересные результаты. Для каталогов софта, музыки и подобных сайтов такой подход позволит вообще обойтись без CMS, PHP и даже без HTML (кроме нескольких файлов).

Посмотрите, какого результата добился автор: что было, показано на рис. 1., что стало – на рис. 2.



Рис. 1. Листинг файлов Apache.



Рис.2. Листинг файлов Apache (версия 2).

А вот как это сделано.

Устанавливаем через .htaccess или httpd.conf следующие параметры каталога (директива Directory).

RewriteEngine Off
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Options Indexes Includes
IndexOptions FancyIndexing SuppressHTMLPreamble XHTML IconsAreLinks FoldersFirst SuppressDescription
HeaderName /files/HEADER.shtml
ReadmeName /files/README.shtml


Объясню по порядку:

1. RewriteEngine off. Отключаем mod_rewrite, чтобы ничего не химичил с ссылками.

2. С помощью директив

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml


подключаем SSI для файлов .shtml

3. Options Indexes Includes. Разрешаем листинг каталога и использование SSI.

4. IndexOptions. рассмотрим подробнее.

4.1. FancyIndexing. Включает расширенное отображение листинга каталога.

4.2. SuppressHTMLPreamble. Подавляет вывод тегов html, head, title и body. Делается это для того, чтобы весь необходимый HTML-код задать самим.

4.3. XHTML Включает использование разметки XHTML 1.0 вместо HTML 3.2. Доступно с версии Apache 2.0.49.

4.4. IconsAreLinks. Делает иконки кликабельными.

4.5. FoldersFirst Каталоги отображаются перед файлами.

4.6. SuppressDescription Удаляет столбец Description. Остальные столбцы можно удалить директивами SuppressLastModified, SuppressSize.

5. HeaderName /files/HEADER.shtml. Задаем файл, который будет "приклеиваться" сверху листинга. В нем мы размещаем ссылки на CSS-файлы, AdSense- блоки, меню и прочее. Путь задается относительно текущего каталога (если не начинается со слеша), либо относительно DocumentRoot (если начинается со слеша).

6. ReadmeName /files/README.shtml. Тоже самое, что и HeaderName, только клеится снизу.

Чтобы исключить некоторые файлы из листинга, используйте директиву IndexIgnore. Например, IndexIgnore HEADER* README*, скрывает все файлы начинающиеся с HEADER и README.

Для Apache 1.3 эти директивы будут иметь следующий вид:

RewriteEngine Off
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes Includes
IndexOptions FancyIndexing SuppressHTMLPreamble IconsAreLinks FoldersFirst SuppressDescription
HeaderName /files/HEADER.shtml
ReadmeName /files/README.shtml


Чтобы изменить иконки файлов, либо измените старые, которые хранятся, например, тут: /var/www/icons/. Если же у вас нет доступа к этому каталогу, то можно использовать директивы AddIcon, AddIconByType и др. Например, AddIcon /icons/image.gif .gif .jpg .xbm задает иконку image.gif для файлов с расширением gif, jpg или xbm.

Вот и все. Теперь можно экспериментировать.



Сипягин Максим, ApacheDev.ru
обсудить статью
© сетевые решения
.
.