Тест.htaccess, если ENV является истинным или определенным

Мне нужно запустить набор операторов RewriteCond, если ENV является истинным или определенным (если не определено, то предположительно ложным). Я пытался использовать:

RewriteCond %{ENV:IS_MOBILE} ^true$
RewriteCond ...

и (не уверен, что это даже верно)

RewriteCond %{ENV:IS_MOBILE} !=true
RewriteCond...

Но ни один из них не работает. Как я могу это сделать?

1 ответ

Решение

Вот пример из реальной жизни, который должен помочь вам найти решение:

Если хост начинается с "s" или "статический", то создайте переменную среды с именем "STATIC" и установите для нее "1":

RewriteCond %{HTTP_HOST} (s|static)\.mysite\.com$
RewriteRule (.*) - [QSA,E=STATIC:1]

Тогда что вы можете искать: если мои хосты "статические", то если файлы считаются "статическими" (img и т. Д.), Тогда остановитесь:

RewriteCond %{ENV:STATIC} 1
RewriteRule (.*)\.(pdf|jpg|jpeg|gif|png|ico)$ - [L]

Теперь, если вы хотите быть уверены, что переменная не существует, просто проверьте, не является ли она пустой. Вот мое правило сразу после предыдущего: оно проверяет, является ли переменная не пустой, и если да, то есть ошибка = 404 (для имитации "не найден"):

RewriteCond %{ENV:STATIC} !^$
RewriteRule (.*) /404.php [L]

В вашем случае, если ваш env не пуст, вы полагаете, что это правда:

RewriteCond %{ENV:IS_MOBILE} !^$
RewriteCond...

В вашем случае, если ваш env равен, точно равен строке "true"Вы полагаете, что это" правда ":

RewriteCond %{ENV:IS_MOBILE} true
RewriteCond...

Надеюсь это поможет.

Я думаю, что вам нужно обернуть код с помощью IfDefine первый

<IfDefine %{ENV:IS_MOBILE}>
     RewriteCond %{ENV:IS_MOBILE} true
</IfDefine>
Другие вопросы по тегам