Тест .htaccess, если ENV является истинным или определенным - PullRequest
7 голосов
/ 14 ноября 2011

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

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

и (не уверен, действительно ли это так)

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

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

Ответы [ 2 ]

11 голосов
/ 14 ноября 2011

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

Если хост начинается с «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", вы полагаете, что это "true":

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

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

0 голосов
/ 10 декабря 2018

Я думаю, вам нужно обернуть код, используя сначала IfDefine

<IfDefine %{ENV:IS_MOBILE}>
     RewriteCond %{ENV:IS_MOBILE} true
</IfDefine>
...