kurteev

Репозиторий файлов на Joomla средствами Apache

  • 19.05.2008

Форумчанин gorunov предложил достаточно простой и эффективный способ организации файлового архива на Joomla средствами веб-сервера Apache, без использования сторонних расширений. Помимо того, что данное решение очень просто в реализации, оно значительно меньше нагружает сервер, нежели сторонние компоненты для организации файловых архивов.

  1. Создадим две вложенные директории /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести соответствующие правки в дальнейшем.

  2. В директорию /files поместим файл index.php следующего содержания:

    <?php
    header("Location:files");
    ?>

    Это необходимо сделать для того, чтобы пользователь, путешествую по директориям вашего репозитория, не смог выйти за его пределы.

  3. В директорию files/files поместим файл .htaccess с настройками:

    RemoveType application/x-httpd-php php php3
    Options Indexes FollowSymLinks MultiViews
    IndexOptions FancyIndexing ScanHTMLTitles
    ReadmeName .footer.html
    HeaderName .header.html

    Команда RemoveType application/x-httpd-php php php3 запрещает запускать файлы *.php на выполнение в пределах вашего репозитория. Это полезно сделать, если вы будете давать доступ на размещение файлов в вашем репозитории третим лицам. В этом режиме php файлы не запускаются, а скачиваются как обычные файлы.

    Команда Options Indexes FollowSymLinks MultiViews говорит серверу APACHE, что в данной директории разрешено сканирование содержимого. Это является ключевой настройкой, которая позволяет организовать репозиторий данного типа в принципе.

    Команда IndexOptions FancyIndexing ScanHTMLTitles позволяет выводить заголовки html-файлов рядом с их именами. Эта опция является полезна, если в вашем репозитории будут хранится HTML-файлы.

    Команды ReadmeName .footer.html, HeaderName .header.html назначают файлы, содержимое которых будет автоматически подставляться в начало и конец страницы репозитории и служат для достижения разнообразных оформительских эффектов.

  4. Теперь создайте файлы .header.html, .footer.html и поместите их в каждую папку в пределах вашего репозитория. Если вы хотите, чтобы ваш репозиторий унаследовал стили вашего шаблона, то в файле .header.html нужно сделать подключение CSS-стилей, например так:

    <link rel="stylesheet" type="text/css" href="http://www.gorodbereza.ru/templates/akogreenportal/css/template_css.css" />
    (В моем случае идет импорт стилей с шаблона "akogreenportal")

    Здесь существует один важный момент. В случае когда файлы заголовков не определены, APACHE автоматически создает заголовки с путём до текущей директории, например Index of /files/files . Это очень полезная информация, так как показывает координаты директории, которую вы в данный момент просматриваете. Если вы создаете свой заголовок (файл .header.html), то в нём будет полезно отразить эту информацию, прописав в каждом файле .header.html, каждой директории, путь до данной директории.

    Использование файлов .header.html и .footer.html позволяет сделать из репозитория полноценную HTML-страницу, которую можно гармонично вписать в дизайн вашего сайта. Вот пример репозитория-галереи (в качестве файлов выступают рисунки): [ссылка]

  5. Осталось самое важное - интегрировать наш репозиторий в JOOMLA. Для этого в админке JOOMLA войдите в окно создания нового элемента меню и выберите тип меню Wrapper. В открывшемся окне настроек впишите:

    Name: - Файлы (название пункта меню)
    Wrapper Link: - /files/files (путь до вашей директории с файлами)
    Auto Height; - yes (активации данной опции является полезной, так как автоматически регулирует высоту окна и избавляет от неэстетической вертикальной полосы прокрутки)

    В остальных опциях можно оставить значения по умолчанию.

    Все, репозитарий готов. Он будет выглядеть примерно как у меня: [ссылка]

Создание закрытой директории

Очень часто вам может понадобиться закрыть некоторые директории от общего доступа. Это также можно сделать средствами Apache: В директорию, которую вы хотите закрыть (в моём случае, это директория private) поместите файл .htacces в котором необходимо прописать "секьюрные" настройки, например:

AuthName "Password Protected"
AuthType Basic
AuthUserFile /www/myproject/passwd.file
require valid-user>

Здесь самой важной является опция AuthUserFile, в которой прописывется путь до файла passwd.file. В файле passwd.file - хранятся данные авторизации: имя пользователя и хэш-образ пароля.

Файл passwd.file создается утилитой htpasswd, которая входит в состав сервера APACHE. Более подробно об этом можно узнать [здесь].

P.S. Если в вашем ропозитории будут отсутствовать иконки файлов, то распакуйте и поместите папку icons в корень вашего сайта [ссылка]

Это интересно:

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Скачать Joomla! 3 Документация Joomla! CMS Свернуть

Новости портала

Новое в блогах

Видео