Тест.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>