Como depurar .htaccess RewriteRule não está funcionando

Eu tenho um RewriteRule em um arquivo .htaccess que não está fazendo nada. Como faço para solucionar isso?

  • Como posso verificar se o arquivo .htaccess está sendo lido e obedecido pelo Apache? Posso escrever uma mensagem de eco “está funcionando”, se eu gravá-la, onde essa linha seria ecoada?
  • Se o arquivo .htaccess não estiver sendo usado, como posso fazer com que o Apache o use?
  • Se o .htaccess está sendo usado, mas meu RewriteRule ainda não está tendo efeito, o que mais posso fazer para depurar?

Digite algum valor de lixo eletrônico em seu .htaccess por exemplo, foo bar , sakjnaskljdnas , qualquer palavra-chave não reconhecida pelo htaccess e visite seu URL. Se estiver funcionando, você deve obter um

500 Erro interno do servidor

Erro do Servidor Interno

O servidor encontrou um erro interno ou uma configuração incorreta e não pôde concluir sua solicitação ….

Eu sugiro que você coloque logo após o RewriteEngine on .


Desde que você está na sua máquina. Eu presumo que você tenha access ao arquivo .conf apache.

abra o arquivo .conf e procure por uma linha similar a:

 LoadModule rewrite_module modules/mod_rewrite.so 

Se for comentado (#), remova o comentário e reinicie o apache.


Para registrar rewrite

 RewriteEngine On RewriteLog "/path/to/rewrite.log" RewriteLogLevel 9 

Coloque as 3 linhas acima em seu virtualhost . reinicie o httpd.

RewriteLogLevel 9 Usando um valor alto para o nível vai diminuir drasticamente o seu servidor Apache! Use o arquivo de registro de reescrita em um Nível maior que 2 somente para debugging! O nível 9 registrará quase todos os detalhes do rewritelog.


ATUALIZAR

As coisas mudaram no Apache 2.4:

De atualizar para 2,4 de 2,2

As diretivas RewriteLog e RewriteLogLevel foram removidas. Essa funcionalidade agora é fornecida configurando o nível apropriado de registro para o módulo mod_rewrite usando a diretiva LogLevel . Veja também a seção de registro do mod_rewrite.

Para mais informações sobre o LogLevel, consulte a Diretiva LogLevel.

você pode realizar

 RewriteLog "/path/to/rewrite.log" 

desta maneira agora

 LogLevel debug rewrite_module:debug 

A resposta “Entre com algum valor de lixo” não foi suficiente para mim, meu site continuava a carregar apesar do lixo typescript.

Em vez disso, adicionei a seguinte linha ao topo do arquivo .htaccess:

 deny from all 

Isso permitirá que você saiba rapidamente se o .htaccess está sendo selecionado ou não. Se o .htaccess estiver sendo usado, os arquivos nessa pasta não serão carregados.

Geralmente, qualquer alteração no .htaccess deve ter efeitos visíveis. Se não houver efeito, verifique seus arquivos de configuração do Apache, algo como:

  ... AllowOverride None ...  

Deve ser alterado para

 AllowOverride All 

E você poderá alterar diretivas em arquivos .htaccess.

Talvez um método mais lógico seria criar um arquivo (por exemplo, test.html), adicionar algum conteúdo e, em seguida, tentar defini-lo como a página de índice:

 DirectoryIndex test.html 

Na maioria das vezes, a regra .htaccess replaceá a configuração do Apache, quando estiver trabalhando no nível de diretório / arquivo

Se você tiver access ao diretório bin do apache, poderá usar

httpd -M para verificar os módulos carregados primeiro.

  info_module (shared) isapi_module (shared) log_config_module (shared) cache_disk_module (shared) mime_module (shared) negotiation_module (shared) proxy_module (shared) proxy_ajp_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) version_module (shared) php5_module (shared) 

Depois disso, diretivas simples como Options -Indexes ou deny from all irão solidificar que o .htaccess esteja funcionando corretamente.

Por que não colocar algum lixo em seu arquivo .htaccess e tentar recarregar o apache. Se o apache não iniciar, você sabe que está funcionando. Remova o lixo e recarregue o apache se ele carregar os parabéns que você configurou.

Para testar suas regras de reescrita do htaccess, basta preencher o URL para o qual você está aplicando as regras, colocar o conteúdo do seu htaccess na área de input maior e pressionar o botão “Testar”.

http://htaccess.mwl.be/