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

304

Від автора: у цьому уроці ми з вами познайомимося відразу з кількома директивами сервера Apache, які дозволять нам керувати доступом. Використовуючи ці директиви, ми зможемо управляти доступом, приміром, забороняючи, або дозволяючи доступ до сайту, частині сайту, або до окремих файлів на сервері.

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

Перша директива, з якою ми познайомимося, це директива Order. Синтаксис директиви простий і вона може бути використана в двох варіантах:

Order Deny,Allow
# або

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-теги, оскільки вимагають закриває директиви і укладені в знаки менше/більше:

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

Deny from all

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

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

Deny from all

У відео версії уроку ви знайдете більше прикладів роботи з цими директивами.

На цьому поточний урок завершено. Удачі і до зустрічі в наступному!

Попередні уроки:

1. Файл htaccess. Починаємо знайомство

2. Файл htaccess. Сторінки помилок