Eu tenho dois problemas principais com o mod_rewrite:
1) Não há nenhum erro significativo relatado quando tenho uma regra inválida
2) Para testar cada modificação de maneira confiável, preciso apagar o cache do chrome. Isso não é ciência do foguete, mas eu tenho que pressionar Ctrl + Shift + Delete, clique em OK, feche a janela e recarregue.
Gostaria de ver se algum dos gurus está disposto a compartilhar seus segredos para gerenciar com eficiência o código mod_rewrite.
apache
mod-rewrite
puk
fonte
fonte
Respostas:
Um truque é ativar o log de reescrita. Para ativá-lo, tente estas linhas na configuração principal do apache ou no arquivo host virtual atual ( não no
.htaccess
):Desde o Apache httpd 2.4, as diretivas RewriteLog e RewriteLogLevel mod_rewrite foram completamente substituídas pela nova configuração de log por módulo.
fonte
RewriteEngine On
seção porque, se você a habilitar (como eu fiz) no.htaccess
arquivo, nada será registrado.A diretiva LogRewrite, como mencionada por Ben, não está mais disponível no Apache 2.4. Você precisa usar a diretiva LogLevel. Por exemplo
Consulte http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
fonte
tail -f error_log|fgrep '[rewrite:'
AllowOverride
estava prontoAll
!Para resolução básica de URL, use um buscador de linha de comando como
wget
oucurl
para fazer o teste, em vez de um navegador manual. Então você não precisa limpar nenhum cache; basta subir a seta e entrar em um shell para executar novamente as buscas de teste.fonte
Existe o testador de htaccess .
Ele mostra quais condições foram testadas para um determinado URL, quais atenderam aos critérios e quais regras foram executadas.
Parece ter algumas falhas, no entanto.
fonte
Baseado na resposta de Ben você pode fazer o seguinte ao executar o apache no Linux (Debian no meu caso).
Primeiro, crie o arquivo rewrite-log.load
/etc/apache2/mods-availabe/rewrite-log.load
Então entre
Seguido por
E quando você terminar de depurar suas regras de reescrita
fonte
LogLevel warn rewrite:trace8
ouLogLevel info rewrite:trace8
onde 8 pode ser qualquer número 1-8