от Витальки — Поигремся с MIME в WEB
Начиналось все с того, что многие знакомые, друзья, родители часто просили меня что-либо (я про различного рода файло) им выслать, "открыть" у себя, вобщем, сделать хоть что-нибудь, чтобы они смогли "забрать" у меня удаленно какую-либо информацию. Не буду рассказывать, сколько способов для этого я перепробовал, но решил остановиться на одном - Apache.
Поскольку IP'шник у меня постоянный, не проблема проделегировать очередной домен и заставить резолвиться на него мою домашнюю машинку. Операция была проделана за 1 минуту. Домен создавать я не стал, а сделал поддомен home.vitalka.ru, который как раз и резолвится на мой IP'шник. Все просто.
Но мне было ужасно неприятно опять видеть все эти стандартные иконки файлов, которые показывает апатч (при отображении содержимого директории без index'а). Вот и появилась у меня мысль немного перенастроить сам апатч, чтобы он показывал мне подобные страницы красиво.
В апатч я, все-таки, решил не лазить, а просто залез на apache.org в документацию и настроил в корне .htaccess. Что в итоге получилось? Можете посмотреть на указанном выше поддомене.
Сейчас немного расскажу, как и что можно сделать для подобного.
Поскольку мне необходимо, чтобы настройки все влияли на любую директорию с любым вложением, файл .htaccess я создал прямо в корне (/var/www/htdocs/localhost/.htaccess). Там же создал следующую структуру директорий:
/.mime/
/.mime/icons/
/.mime/html
В .mime/icons/ я забросил обычные иконки из темы oxygen для gnome. Дав им понятные имена, что-то вроде
folder.png
image.png
movie.png
archive.png
config.png
docs.png
Каждому, как нравится.
Теперь приведу содержимое файла /.htaccess, а потом все поясню:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
IndexOptions FancyIndexing NameWidth=100 FoldersFirst SuppressDescription SuppressHTMLPreamble HTMLTable Charset=UTF-8 AddIcon (IMG,/.mime/icon/folder.png) ^^DIRECTORY^^ AddIcon (IMG,/.mime/icon/text.gif) *.txt *.rtf AddIcon (IMG,/.mime/icon/configs.png) *.conf *.cfg *.cnf AddIcon (IMG,/.mime/icon/pdf.png) *.pdf AddIcon (IMG,/.mime/icon/xls.gif) *.xls AddIcon (IMG,/.mime/icon/doc.gif) *.doc AddIcon (IMG,/.mime/icon/archive.gif) *.rar *.zip *.tar *.tar.gz *.tar.bz *.tar.bz2 AddIcon (IMG,/.mime/icon/cd.gif) *.iso *.bin *.mdf *.mds *.ccd *.img *.nrg AddIconByType (IMG,/.mime/icon/sound.png) audio/* AddIconByType (IMG,/.mime/icon/image.png) image/* AddIconByType (IMG,/.mime/icon/movie.png) video/* DefaultIcon /.mime/icon/misc.gif HeaderName /.mime/html/header.html ReadmeName /.mime/html/footer.html |
IndexOptions в данном случае означает включение определённых параметров индексации. После директивы IndexOptions идут через пробел интересующие нас опции:
* FancyIndexing — включить “красивую” индексацию с использованием изображений и текста;
* NameWidth=* отвечает за то, чтобы имена файлов не обрезались (строчки с именами файлов будут настолько широкими, сколько самое длинное название файла);
* FoldersFirst — каталоги будут на первом месте в генерируемом списке (иначе список будет отсортирован по именам объектов без учёта, директория это или файл);
* SuppressDescription — отменит генерацию описания файлов;
* SuppressHTMLPreamble — отменит генерацию заголовков в HTML (указание типа документа и т.п.). Это используется в том случае, если необходимо применить собственную “шапку”;
* HTMLTable — вместо генерации списка с использованием табуляции, сервер будет строить таблицы. Это позволяет сохранить ширину столбцов правильной при использовании не monotype-шрифта (в моём примере используется шрифт Trebuchet MS);
* Charset=UTF-8 — задаёт кодировку генерируемого индекса. В моём случае это UTF-8.
Далее следуют директивы, отвечающие за назначение иконок различным типам скачиваемых файлов.
* AddIcon — добавить иконку для файла, имя которого задаётся по образцу;
* AddIconByType — добавить иконку для определённого MIME-типа;
* DefaultIcon — в случае, если для определённого типа файла не найдётся специальной иконки, будет использована эта.
Так же я создал 2 файлика: /.mime/html/header.html и /.mime/html/footer.html, в которых я очень примитивным html-способом описал внешний вид "шапки" и "подвала" генерируемой страницы.
Вот здесь можно найти гораздо больше информации, при помощи которой я все и сделал...