Por que está habilitando o log de reescrita em .htaccess não está funcionando?

8

Eu quero habilitar o registro de regravação para que eu possa depurar uma regra de regravação, mas adicionar as diretivas RewriteLog está causando um erro 500.

Informação da versão:

Ubuntu 14.04

Server version: Apache/2.4.12 (Ubuntu)
Server built:   Feb  4 2015 14:22:06

conteúdo de .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 5

RewriteBase /

RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

No log de erro, vejo:

/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration
    
por codecowboy 26.02.2015 / 19:17

2 respostas

13

Além de ter esquecido que a criação de log não pode ser configurada em .htaccess arquivos, isso também se tornou um problema na versão do Apache. A diretiva RewriteLog foi substituída em versões mais recentes e adicionar o seguinte à configuração do Virtualhost ativou o registro de regravação para mim:

LogLevel alert rewrite:trace3 (can be increased to trace8)

Do manual:

Aqueles familiarizados com as versões anteriores do mod_rewrite, sem dúvida, estarão procurando as diretivas RewriteLog e RewriteLogLevel. Esta funcionalidade foi completamente substituída pela nova configuração de registro por módulo mencionada acima.

Para filtrar essas mensagens no log de erros, você pode fazer algo como:

tail -f error_log|fgrep '[rewrite:'
    
por 27.02.2015 / 07:14
4

Não posso deixar de me repetir:

A maioria das pessoas que usa o .htaccess e pergunta sobre isso no ServerFault não deve estar usando o .htaccess, já que é uma solução para o usuário final que nunca foi planejada para administradores:

You should avoid using .htaccess files completely if you have access to httpd main server config file. Using .htaccess files slows down your Apache http server. Any directive that you can include in a .htaccess file is better set in a Directory block, as it will have the same effect with better performance.
Source: Apache manual

Aparentemente, a maioria das pessoas que publicam suas configurações parecem ser programadores de cultos de carga interessados em copiar arquivos .htaccess cegamente sem entender razões.

Seu problema é um excelente exemplo: o RewriteLog diretiva só é válida no contexto de uma configuração do servidor ou host virtual ...

Isso significa que não é permitido em um arquivo .htaccess !

    
por 26.02.2015 / 19:40