Файл htaccess. Управление доступом

Файл htaccess

От автора: в этом уроке мы с вами познакомимся сразу с несколькими директивами сервера Apache, которые позволят нам управлять доступом. Используя эти директивы, мы сможем управлять доступом, к примеру, запрещая или разрешая доступ к сайту, к части сайта или к отдельным файлам на сервере.

скачать исходникискачать урок

Первая директива, с которой мы познакомимся, это директива Order. Синтаксис директивы прост и она может быть использована в двух вариантах:

Order Deny,Allow
# или
Order Allow,Deny

Deny и Allow – это две другие директивы, которые как раз позволяют запретить (deny) или разрешить (allow) доступ.

В зависимости от выбранного варианта [Deny,Allow] или [Allow,Deny] для директивы Order, мы изменяем логику работы сервера. Если используем первый вариант (Deny,Allow), то мы сообщаем серверу, что хотим запретить доступ для всех (deny), кроме тех, которым разрешим (Allow).

Если использован второй вариант (Allow,Deny), тогда подразумевается, что мы разрешаем доступ всем, кроме определенных IP.

Здесь стоит отметить, что на самом деле использование директивы Order не является обязательным и возможно использование директив Deny и Allow без директивы Order. Также не будет ошибкой, если, к примеру, объявив в директиве Order вариант Deny,Allow, мы сначала используем директиву Allow, а затем Deny. Хотя все же лучше будет, если мы в этом вопросе не будем отходить от рекомендаций документации.

Итак, для того, чтобы закрыть доступ к сайту для всех, достаточно прописать в файле htaccess в корне следующие строки:

Order Deny,Allow
Deny from all

Так мы закрыли доступ ко всему сайту для всех IP. Теперь сервер будет отдавать клиенту ответ 403, т.е. доступ запрещен. Если вы захотите открыть при этом доступ к сайту с конкретного IP, тогда его можно указать в директиве Allow. Например, откроем доступ для IP 127.0.0.1:

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

Также можно открывать доступ для нескольких IP. Для этого достаточно перечислить их через пробел:

Order Deny,Allow
Deny from all
Allow from 127.0.0.1 127.0.0.2

В видео версии урока вы найдете больше примеров. Очевидно, что точно так же мы можем закрыть доступ не ко всему сайту, а только к какой-нибудь папке. Для этого просто нужно создать в папке файл htaccess и в нем прописать всего одну строку:

Deny from all

А что, если мы хотим запретить доступ не к папке, а к файлу. Для этого мы воспользуемся еще двумя директивами: Files и FilesMatch. Данные директивы похожи на HTML-теги, поскольку требуют закрывающей директивы и заключены в знаки меньше/больше:

<Files>
</Files>

На самом деле они представляют собой некую ограничивающую конструкцию, позволяющую обратиться только к конкретному файлу или файлам. Например, давайте закроем доступ к архиву rar.rar:

<Files “rar.rar”>
Deny from all
</Files>

Теперь файл пропадет из листинга каталога и при попытке обращения к файлу напрямую сервер вернет нам вместо файла 403 ошибку.

Если мы хотим ограничить доступ к группе файлов, то здесь можно использовать директиву FilesMatch вкупе с регулярными выражениями. Например, так можно ограничить доступ к графическим файлам и архивам:

<FilesMatch "\.(gif|png|jpe?g|rar|zip)$">
Deny from all
</FilesMatch>

В видео версии урока вы найдете больше примеров работы с данными директивами.

На этом текущий урок завершен. Удачи и до встречи в следующем!

Предыдущие уроки:

1. Файл htaccess. Начинаем знакомство

2. Файл htaccess. Страницы ошибок

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (4)

  1. Sam

    Интересный урок!!! А возможно ли сделать так что сайт будет открыт лишь только для членов «клуба» и закрыт для всех остальных. Например ,сайт супер байкеров, на тёмном фоне выплывает окно и предлогает или зарегестрироватся или войти, а при входе спрашивает вы вообще байкер нет бай бай это сайт не для вас, вы байкер но не супер извените но сайт не для вас, вы супер байкер заходите пожалуста введите ник и код и заходите, ну вот что то в этом роде. Если в озможно может покажете как желательно в видео зарание блогодарен!!!

    • Андрей Кудлай

      Для этого достаточно разрешать просмотр сайта только авторизованным пользователям. Htaccess здесь не нужен и все делается посредством программной части.

  2. Sam

    Есть живой пример как?

    • Андрей Кудлай

      Любой наш курс, в котором реализована система авторизации/регистрации: Интернет-магазин под ключ, Корпоративный сайт под ключ. Также система авторизации уже реализована в бесплатном цикле Каталог товаров. Ну и можно брать готовые CMS, например WordPress, где имеется авторизация/регистрация.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree