Директива Order в .htaccess: от перемены мест слагаемых…

Пятница, Август 3, 2018, 12:13 | Вебмастеру | 235 просм. | Нет комментариев

Директива Order в файле .htaccess определяет правила доступа к содержимому на сайте (файлам, директориям, самому сайту). Используется с директивами Allow и Deny (разрешение и запрет соответственно). В качестве объектов разрешения или запрета выступают IP — единичные или целые сетки. Например, если вы хотите запретить доступ к сайту со всех IP, кроме своего, запись этого запрета должна выглядеть так:

Order Deny,Allow
Deny from all
Allow from 13.107.21.200

Так вот, про перемену мест слагаемых. Результат ваших трудов будет очень даже зависеть от того, какой порядок директив вы пропишете. Потому что можно написать Order Deny,Allow, а можно Order Allow,Deny.

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

Поясню на конкретном примере. Давайте поменяем местами Deny и Allow в записи выше. Получим:

Order Allow,Deny
Deny from all
Allow from 13.107.21.200

Сначала ищутся записи, соответствующие директиве Allow: ага, разрешить из 13.107.21.200. Идем дальше, что у нас с Deny? Deny from all. Всё, никого не пустим. В том числе и 13.107.21.200. Deny выполнялась после Allow, в результате 13.107.21.200 забанен вместе с остальными IP.

Вот еще пример.

Order Deny,Allow
Allow from all
Deny from 13.107.21.200

Вы хотели с помощью такой записи разрешить доступ ко всем IP, кроме 13.107.21.200? А не выйдет. С такой записью ваш запрет не сработает, потому что Allow from all выполнилась уже после Deny from 13.107.21.200 и перекрыла этот запрет, разрешив доступ всем IP, в том числе и этому. Правильная запись:

Order Allow,Deny
Allow from all
Deny from 13.107.21.200

Исходя из вышесказанного, понятно, что не имеет значения, в каком порядке вы будете прописывать строки с вашими запретами и разрешениями: все равно все будет обрабатываться в соответствии с порядком, указанным в строке Order: все строки Deny или Order одним блоком.

Похожие записи:

Понравилось? Поделись ссылкой с друзьями!

А ещё вас может заинтересовать...

Метки: , , ,

Оставить комментарий


Вы не бот? Докажите! Решите простой пример: *