Назад | Перейти на главную страницу

Как наложить сразу два условия на Apache CustomLog?

В настоящее время у меня есть отдельные журналы доступа для статических и динамических страниц. Мой httpd.conf имеет (внутри <VirtualHost>):

<LocationMatch "^/(img|js|css|thumb|banner)/(.+)$">
SetEnv static 1
</LocationMatch>

CustomLog /var/log/apache2/gopal.log myCustom env=!static
CustomLog /var/log/apache2/gopal-static.log myCustom env=static

Хотелось бы дополнить его

SetEnvIf Remote_Addr "127.0.0.1" dontlog
CustomLog /var/log/apache2/gopal.log myCustom env=!dontlog

, но не могу найти пример использования CustomLog expr = параметр и не может угадать рабочее выражение: expr=!(reqenv('static')||reqenv('dontlog')) производит

синтаксическая ошибка, непредвиденный T_OP_OR

В reqenv функция должна сравниваться с чем-то, вы не можете просто проверить, установлена ​​ли переменная среды или нет, как пытается ваш код. Признаюсь, сообщение об ошибке не особо поучительно :-)

Для вас должно работать следующее:

SetEnvIf Request_URI ^/(img|js|css|thumb|banner) static=yes
SetEnvIf Remote_Addr "127.0.0.1" dontlog=yes

CustomLog logs/access_log myCustom expr=!(reqenv('static')=='yes'||reqenv('dontlog')=='yes')