От автора: в этом уроке мы с вами познакомимся сразу с несколькими директивами сервера Apache, которые позволят нам управлять доступом. Используя эти директивы, мы сможем управлять доступом, к примеру, запрещая или разрешая доступ к сайту, к части сайта или к отдельным файлам на сервере.
Первая директива, с которой мы познакомимся, это директива Order. Синтаксис директивы прост и она может быть использована в двух вариантах:
1 2 3 |
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 в корне следующие строки:
1 2 |
Order Deny,Allow Deny from all |
Так мы закрыли доступ ко всему сайту для всех IP. Теперь сервер будет отдавать клиенту ответ 403, т.е. доступ запрещен. Если вы захотите открыть при этом доступ к сайту с конкретного IP, тогда его можно указать в директиве Allow. Например, откроем доступ для IP 127.0.0.1:
1 2 3 |
Order Deny,Allow Deny from all Allow from 127.0.0.1 |
Также можно открывать доступ для нескольких IP. Для этого достаточно перечислить их через пробел:
1 2 3 |
Order Deny,Allow Deny from all Allow from 127.0.0.1 127.0.0.2 |
В видео версии урока вы найдете больше примеров. Очевидно, что точно так же мы можем закрыть доступ не ко всему сайту, а только к какой-нибудь папке. Для этого просто нужно создать в папке файл htaccess и в нем прописать всего одну строку:
1 |
Deny from all |
А что, если мы хотим запретить доступ не к папке, а к файлу. Для этого мы воспользуемся еще двумя директивами: Files и FilesMatch. Данные директивы похожи на HTML-теги, поскольку требуют закрывающей директивы и заключены в знаки меньше/больше:
1 2 |
<Files> </Files> |
На самом деле они представляют собой некую ограничивающую конструкцию, позволяющую обратиться только к конкретному файлу или файлам. Например, давайте закроем доступ к архиву rar.rar:
1 2 3 |
<Files “rar.rar”> Deny from all </Files> |
Теперь файл пропадет из листинга каталога и при попытке обращения к файлу напрямую сервер вернет нам вместо файла 403 ошибку.
Если мы хотим ограничить доступ к группе файлов, то здесь можно использовать директиву FilesMatch вкупе с регулярными выражениями. Например, так можно ограничить доступ к графическим файлам и архивам:
1 2 3 |
<FilesMatch "\.(gif|png|jpe?g|rar|zip)$"> Deny from all </FilesMatch> |
В видео версии урока вы найдете больше примеров работы с данными директивами.
На этом текущий урок завершен. Удачи и до встречи в следующем!
Комментарии (4)