Ограничение доступа к файлам и папкам используя mod_authz_host
Файл .htaccess позволяет индивидуально настраивать работу веб-сервера для вашего сайта. Можно устанавливать пароли для доступа к странице или целой папке, устанавливать страницу, выдаваемую по умолчанию при запросе к каталогу, и многие другие.
Правила написания .htaccess
- пути к файлам (директориям) указываются от корня сервера.
Правильный пример:
DirectoryIndex /home/st1331/www/data/main.htmlОшибка:
DirectoryIndex /www/news/main.html - Адресация к документам, расположенным на других сайтах должно выполняться с указанием протокола
Правильный пример:
Redirect /oldsite/ http://www.site.ru/Ошибка:
Redirect /oldsite/ www.site.ru/
Комментарии — строки, начинающиеся с символа #.
В выражениях можно использовать переменные окружения, например %{REMOTE_ADDR} или %{HTTP_REFERER}.Файл .htaccess должен быть записан в UNIX-формате — это означает что перевод строки должен задаваться в нем одним символом (0x0A), а не двумя (0x0D 0x0A), как в Windows
Определение области действия директив
Директива Files
Описание: директива Files ограничивает действие директив одним файлом
filename имя файла
Пример:
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
</Files>
Директива FilesMatch
Описание: директива FilesMatch ограничивает действие директив группы файлов
regexp: регулярное выражение (шаблон), описывающее группу файлов.
Пример:
Order Allow,Deny
Allow from all
Deny from 192.168.1.1
</Files>
Перенаправления (редиректы)
Директива Redirect
Описание: Выполняет редирект посетителя, запрашивающего документ на другой URL. Выполняет внешний редирект (сообщая браузеру о необходимости загрузить другой URL).
Синтаксис: Redirect [status] URL-path URL status: необязательное поле, определяет код возврата, допустимые значения: permanent (301 — документ перемещен постоянно), temp (302 — документ перемещен временно), seeother (303 — смотрите другой), gone (410 — убран).
URL-path: локальная часть URL запрашиваемого документа.
URL: URL куда должен быть выполнен редирект
Redirect temp /index.html http://www.oddler.ru/newyear.html
Redirect permanent /prices2002.html http://www.oddler.ru/prices2003.html
Директива RedirectMatch
Описание: Выполняет редирект посетителя, запрашивающего документ на другой URL. Выполняет внешний редирект (сообщая браузеру о необходимости загрузить другой URL). Директива аналогична Redirect, за исключением того, что вместо адреса запрашиваемого документа пишется регулярное выражение (шаблон)
Синтаксис: Redirect [status] regexp URL
status: необязательное поле, определяет код возврата, допустимые значения: permanent (301 — документ перемещен постоянно), temp (302 — документ перемещен временно), seeother (303 — смотрите другой), gone (410 — убран).
URL-path: локальная часть URL запрашиваемого документа.
regexp: регулярное выражение (шаблон), описывающее группу URL-ей.
RedirectMatch (.*.jpg)$ http://www.myanother.com$1
Ограничение доступа
Директива Order
Описание: Устатавливает порядок работы директив Deny и Allow
Синтаксис: Order порядок
порядок может принимать значения Deny, Allow или Allow,Deny
По умолчанию: Order Deny, Allow
Директива Deny
Описание: Запрещает доступ определенных клиентов к ресурсам.
Синтаксис: Deny from all|host
host может принимать значения IP адреса или имени хоста.
Директива Allow
Описание: Разрешает доступ определенных клиентов к ресурсам.
Синтаксис: Allow from all|host
host может принимать значения IP адреса или имени хоста.
Пример: запрет на доступ для всех
Deny from all
Пример: разрешение на доступ для определенных IP адресов
Order Deny,AllowDeny from all
Allow from .oddler.ru
Allow from 192.168.1.1
Пример: запрет на доступ для всех за исключением определенных IP адресов
Allow from all
Deny from .oddler.ru
Deny from 192.168.1.1
Пример: запрет на доступ для определенный файл. В примере запрещается доступ к файлу .htpasswd для всех посетителей
Order Deny,Allow
Deny from all
</Files>
Пример: запрет на доступ для определенной группы файлов. В примере запрещается доступ к файлам с расширениями «lib» и «pm» для всех посетителей
Order Deny,Allow
Deny from all
</FilesMatch>
Установка пароля на доступ
Директива AuthName
Описание: значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации.
Директива AuthType
Описание: Эта директива выбирает тип аутентификации. Возможны следующие типы: Basic and Digest.
Синтаксис: AuthType Basic|Digest
Директива AuthUserFile
Описание: значение AuthUserFile указывает имя файла с паролями для аутентификации пользователей. Файл с паролями может быть создан утилитой htpasswd. Путь к файлу с паролями задается относительно корня веб-сервера. Храните файл с паролями в папке, доступ к которой закрыт для пользователей.
Синтаксис: AuthUserFile путь-к-файлу
Директива Require
Описание: Определяет пользователей, которые могут получить доступ
Синтаксис: Require имя-пользователя|valid-user
Указывая valid-user вы разрешаете доступ всем пользователям, перечисленным в файле паролей.
Пример: разрешает доступ директории всем пользователям:
AuthType Basic
AuthUserFile /home/st1331/www/data/.htpasswd
Require valid-user
Пример: разрешает доступ к директории только 3-м пользователям:
AuthType Basic
AuthUserFile /home/st1331/www/data/.htpasswd
Require antonio solo marina
Пример: ограничение доступа к определенным файлам (в этом примере ограничен доступ к zip архивам)
AuthName "Only valid users can download zip files."
AuthType Basic
AuthUserFile /home/st1331/www/data/.htpasswd
Require valid-user
</FilesMatch>
Пример: ограничение доступа к одному файлу (в этом примере ограничен доступ к файлу .htpasswd)
AuthName "Access restricted."
AuthType Basic
AuthUserFile /home/st1331/www/data/.htpasswd
Require antonio solo
</Files>
Управление сервером
Директива DirectoryIndex
Описание: Позволяет изменить страницу, которая будет показываться при обращении к директории
Синтаксис: DirectoryIndex page [page]
page — название стартовой страницы. Может быть указано несколько страниц.
Пример:
Директива ErrorDocument
Описание: позволяет устанавливать альтернативные страницы ошибок
Синтаксис: ErrorDocument code URL-path
URL-path — локальный адрес страницы
code — код ошибки. Наиболее типичные коды ошиброк:
401 — Требуется авторизация (Authorization Required)
403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided)
404 — запрашиваемый документ (файл, директория) не найден (Not Found)
500 — внутренняя ошибка сервера — ошибка скрипта или ошибка в синтаксисе файла .htaccess — (Internal Server Error)
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
Директива SetHandler
Описание: устанавливает обработчик для файлов в заданной директории
Синтаксис: SetHandler handler-name
Директива AddHandler
Описание:
устанавливает обработчик для файлов указанного типа
Синтаксис: AddHandler handler-name filename-extension
AddHandler parser-script .htm
Директива AddDefaultCharset
Описание: установка кодировки по-умолчанию
По умолчанию на сервере установлена кодировка Windows-1251
Как заставить Апач обрабатывать SSI директивы?
SSI позволяют «собирать» страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем — нижней. А посетитель видит обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в httpd.conf: В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes. После, в файле .htaccess пишем:
Как поставить запрет на отображение содержимого директории при отсутствии индексного файла?
Предположим, что у вас вся графика, используемая на сайте находится в директории img. Посетитель может набрать в адресной строке браузера эту директорию и увидеть список всех ваших графических файлов. Конечно, это не нанесет вам урона, но можно и не дать такого просмотра посетителю. В .htaccess пишем:
Пользователь не сможет просмотреть эту папку.