Как мне получить 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", чтобы работать с вашим примером, и добавил еще несколько пояснений.