Украшаем листинг каталога в Apache
Дата: 12 октября 2007 года
Прочитал сегодня пост CSS Styling Apache Directory Listings. Очень интересный результат получил автор. Для каталогов софта, музыки и подобных сайтов такой подход позволит вообще обойтись без CMS, PHP и даже без HTML (кроме нескольких файлов).
Посмотрите, какого результата добился автор:
До:
После:
А вот как это сделано.
Устанавливаем через .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.
Вот и все. Теперь можно экспериментировать. Успехов.