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

Как отключить ведение журнала apache при доступе к определенным каталогам?

Как мне получить apache, чтобы предотвратить регистрацию HTTP-запросов на основе каталога? Я хочу сделать что-то подобное

<IfModule mod_userdir.c>
    UserDir public_html

    <Directory /home/*/public_html/nolog>
        Options NoAccessLog
    </Directory>
</IfModule>

Вы можете установить флаг среды всякий раз, когда запрашивается конкретный URL-адрес, и фильтровать ведение журнала на основе этого:

<IfModule mod_userdir.c> 
    UserDir public_html 

    SetEnvIf Request_URI "/nolog" dontlog
    CustomLog /var/log/apache2/useraccess_log combined env=!dontlog
</IfModule> 

Все материалы по теме можно найти на http://httpd.apache.org/docs/2.2/env.html Раздел «Использование переменных среды - условное ведение журнала»

Эти две строки делают следующее: всякий раз, когда Клиент запрашивает URL-адрес, содержащий строку "/ nolog", он устанавливает dontlog переменной среды.

В следующей строке параметр «env =! Dontlog» указывает директиве CustomLog регистрировать доступ клиента, если не установлена ​​переменная dontlog. ! отменяет директиву. Если вы оставите! чтобы он читал "env = dontlog", а не только регистрировать доступ к путям, в запрошенном URL которых есть "/ nolog".

РЕДАКТИРОВАТЬ: Я удалил ^ в регулярном выражении "/ nolog", чтобы работать с вашим примером, и добавил еще несколько пояснений.