Условная строка 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]

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

0
задан 17 December 2019 в 14:57
1 ответ
 RewriteCond% {ENV: HTTP_CDN_LOOP}! Cloudflare [NC, OR]
RewriteCond% {ENV: HTTP_CDN_LOOP}! ^ $

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

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

Например:

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

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

0
ответ дан 12 January 2020 в 00:48

Теги

Похожие вопросы