Мне нужно проверить, существует ли переменная среды и что значение равно «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, поэтому оба должны быть успешными для обработки правила.