У меня есть контент, который доступен только людям, которые прошли поиск по GeoIP и соответствуют определенным странам. Это делается с помощью mod_rewrite, и все работает хорошо.
Что я хотел бы сделать, так это регистрировать неудачные попытки, чтобы помочь отладить людей, которые должны иметь возможность получить этот контент, но не могут. Для этого в настоящее время мне нужен RewriteLogLevel на уровне 4, что означает, что все на виртуальном хосте регистрируется, а не только то, что я ограничиваю.
Это пример из readme-файла mod_geoip:
GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule \.(gif|jpg|png|css)$ - [L] # don't redirect images and stylesheets
RewriteRule ^(.*)$ http://www.canada.com [L] # redirect everything else
Я хотел бы добавить что-то вроде
WriteThisToLog "Denied access to $1 from IP $2 due to calculated country $3"
Есть все переменные - есть ли директива, которую я могу использовать для записи в журнал ошибок Apache?
Редактировать: Я бы поставил это в комментарии к правильному ответу, но форматирование было важно. Я закончил с этим:
RewriteRule ^(.*)$ http://www.canada.com [L,E=GEOIP_FAIL:1] # redirect everything else
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" GEOIP_COUNTRY_CODE=%{GEOIP_COUNTRY_CODE}e" geoip_fail_format
CustomLog /var/log/httpd/geoip_fail_log geoip_fail_format env=GEOIP_FAIL
Есть модуль под названием mod_log_config в котором есть директивы, называемые CustomLog и LogFormat. В основном мы определяем выходной формат с помощью LogFormat и перенаправляем его в файл, упомянутый в CustomLog.