Использование двух переменных среды для блокировки доступа в Apache .htaccess - PullRequest
0 голосов
/ 02 декабря 2018

Я использую SetEnvIf и Deny для блокировки доступа к определенным странам в моем .htaccess.

Но мне нужно исключить определенные URL-адреса из этой блокировки, и поэтому я устанавливаю другую переменную среды для этих URL-адресов..

Как запретить на основе комбинации переменной 1 и переменной 2?

SetEnvIf GEOIP_COUNTRY_CODE xx BlockedCountry
SetEnvIf Request_URI "^/important" NeverBlock

В псевдокоде я хочу сделать это сейчас:

Deny from env=BlockedCountry && !NeverBlock

1 Ответ

0 голосов
/ 06 декабря 2018

Из Документация Apache :

Синтаксис: Запретить от всех | host | env = [!] Env-переменная [host | env = [!] Env-variable]...

Это означает, что вы можете комбинировать условия одно за другим (между ними нет "логических" операторов).

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

Deny from env=BlockedCountry env=!NeverBlock

Обновление

Из того, что вы сказали, похоже, что это подразумевает условие OR вместоAND (что вы хотите).Для этого вы можете использовать этот обходной путь

SetEnvIf GEOIP_COUNTRY_CODE xx MustBeBlocked
SetEnvIf Request_URI "^/important" !MustBeBlocked

Deny from env=MustBeBlocked

С помощью этого метода вы устанавливаете / отменяете переменную среды в зависимости от случая, которая имитирует условие AND.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...