Назад | Перейти на главную страницу

Условная строка Htaccess

Мне нужно проверить, существует ли переменная среды и что значение равно «cloudflare», в случае, если нет запрета доступа.

Я провел несколько тестов, и мне не удалось заставить его работать. Это мой тестовый код.

  RewriteEngine on
  RewriteCond %{ENV:AH_SITE_ENVIRONMENT} prod
  RewriteCond %{ENV:HTTP_CDN_LOOP} !cloudflare [NC,OR]
  RewriteCond %{ENV:HTTP_CDN_LOOP} !^$
  RewriteRule ^(.*)$ - [F,L]

Спасибо за помощь

RewriteCond %{ENV:HTTP_CDN_LOOP} !cloudflare [NC,OR]
RewriteCond %{ENV:HTTP_CDN_LOOP} !^$

Убедившись, что переменная не содержать "облачную вспышку" ИЛИ является не пусто, то он всегда будет заблокирован, потому что, когда он действительно содержит "cloudflare"; это не пусто! (2-е условие выполнено успешно, и правило обрабатывается.)

Единственный способ проверить, существует ли env var, - это проверить, что он содержит что-то, так как вы не можете различить "не существует" и "пусто" в .htaccess.

Например:

RewriteCond %{ENV:MY_VAR} .
RewriteCond %{ENV:MY_VAR} !=cloudflare

Первое условие проверяет, существует ли переменная env и содержит как минимум 1 символ. Второе условие проверяет, что значение не именно равно "cloudflare". Эти два условия неявно объединены оператором AND, поэтому оба должны быть успешными для обработки правила.