Eu tenho algumas regras mod_rewrite para redirecionar solicitações indesejadas feitas por bots para uma página 404 estática, como:
RewriteRule ^(.*)\.asp(.*)$ https://%{SERVER_NAME}/errors/404.html [L,R=301,NC]
Eu tenho algumas dezenas dessas regras. No entanto, ao inspecionar meu log de erros do Apache, vejo que, para cada solicitação, uma entrada de log está sendo criada para cada regra, como:
[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/
Por que o Apache está aplicando todas as regras a todas as URLs quando elas obviamente não correspondem? Isso está aumentando meu log de erros e tornando praticamente impossível encontrar mensagens de erro reais. Como faço para parar isso ou, pelo menos, impedir que o Apache envie spam ao arquivo de log com essas entradas?
Não está necessariamente aplicando a regra, está testando se ela deve ser aplicada, e é para isso que serve essa entrada de log de "depuração". Esse nível adicional de log não é habilitado por padrão - alguém habilitou isso explicitamente na configuração do servidor e aparentemente (inadvertidamente) o deixou habilitado. Isso nunca deve ser ativado permanentemente em um servidor de produção.
No Apache 2.4+, procure a
LogLevel
diretiva na configuração do seu servidor/host virtual. Por exemplo:Observe, no entanto, que é possível definir o nível de log de vários módulos (ou todos os módulos) com uma única diretiva. Definir
LogLevel
comodebug
,trace1
..trace8
é considerado no nível de "depuração". Quanto maior o nível, mais mensagens são registradas.E remova-o, comente-o ou defina-o como padrão:
Referência:
https://httpd.apache.org/docs/2.4/mod/core.html#loglevel