Как отключить бесполезные сообщения журнала Apache mod_rewrite?

У меня есть несколько правил mod_rewrite для перенаправления ненужных запросов, сделанных ботами, на статическую страницу 404, например:

RewriteRule ^(.*)\.asp(.*)$ https://%{SERVER_NAME}/errors/404.html [L,R=301,NC]

У меня есть несколько десятков этих правил. Однако, просмотрев мой журнал ошибок Apache, я вижу, что для каждого отдельного запроса создается запись журнала для каждого отдельного правила, например:

[Wed May 30 10:52:59.740327 2018] [rewrite:trace3] [pid 2021:tid 140011088312064] mod_rewrite.c(476): [client 10.91.178.131:62065] 10.91.178.131 - - [example.com/sid#7f56e5f7bc18][rid#7f56dc0100a0/initial] applying pattern '^(.*)\\.asp(.*)$' to uri '/admin/', referer: https://example.com/admin/record/149/

Почему Apache применяет каждое правило к каждому URL-адресу, когда они явно не соответствие? Это увеличивает мой журнал ошибок и делает практически невозможным поиск фактических сообщений об ошибках. Как мне остановить это или, по крайней мере, не дать Apache спамить файл журнала с этими записями?

2
задан 30 May 2018 в 17:57
1 ответ

Почему Apache применяет каждое правило к каждому URL, когда они явно не совпадают?

Это не обязательно применение правила, это проверка того, должно ли оно применяться, и для этого и предназначена эта "отладочная" запись в лог-журнале. Этот дополнительный уровень протоколирования не включен по умолчанию - кто-то явно включил его в конфигурационном файле сервера и, казалось бы (случайно), оставил его включенным. Это никогда не должно быть включено постоянно на производственном сервере.

В Apache 2.4+ ищите директиву LogLevel в конфигурационном файле / виртуальном хосте вашего сервера. Например:

LogLevel rewrite:trace3

Обратите внимание, что с помощью одной директивы можно установить лог-уровень нескольких модулей (или всех модулей). Установка уровня журнала LogLevel на debug, trace1 ... trace8 считается уровнем "debug"-level. Чем выше уровень, тем больше сообщений регистрируется.

И либо удалите его, прокомментируйте или установите по умолчанию:

LogLevel warn

Справка:
https://httpd.apache.org/docs/2.4/mod/core.html#loglevel

1
ответ дан 3 December 2019 в 12:32

Теги

Похожие вопросы