Problemas com reconhecimento de .htaccess

O servidor de páginas dinâmicas Apache, possui um arquivo de configuração e controle de pastas chamado .htaccess, assim com um ponto na frente mesmo.

Muito utilizado hoje em dia para reescrever urls de sites, criando as chamadas urls amigáveis. Mas problemas podem surgir se o arquivo httpd.conf do Apache não estiver corretamente configurado.

Digamos que você criou um arquivo .htaccess para seu projeto, algo como:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /seu_projeto/index.php/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ seu_projeto/index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 seu_projeto/page_404.php
</IfModule>

Veja o comando “IfModule mod_rewrite.c“. Ele verifica se a biblioteca mod_rewrite está habilitada no arquivo http.conf do seu Apache.

Lá pela linha 116 você deve ter algo do tipo:

LoadModule rewrite_module modules/mod_rewrite.so

Se esta linha iniciar com # significa que está desabilitado. Sendo assim para habilitar basta retirar a #, salvar o arquivo e reiniciar o server.

Sugiro que faça um teste deixando o módulo desabilitado, para ver se o seu .htaccess direciona para a página de erro 404.

<IfModule !mod_rewrite.c>
ErrorDocument 404 seu_projeto/page_404.php
</IfModule>

Neste caso ele está reconhecendo o arquivo corretamente, e você pode utilizá-lo para criar urls amigáveis ou fazer outras configurações de diretório.

Tem um post bem interessante sobre como configurar um arquivo htaccess no site www.devin.com.br. Ou veja diretamente no site da Apache Tutorial htaccess em inglês.

Agora o possível problema proposto. Seu arquivo htaccess não está sendo considerado pelo server. Ele simplesmente ignora o arquivo e não lê nenhuma das suas configurações.

Novamente no seu arquivo httpd.conf do Apache procure pelo seguinte:

<Directory />
AllowOverride None
</Directory>

Se estiver None significa que ele irá ignorar todos os arquivos htaccess que você criar em seus projetos. Para mudar isso altere da seguinte forma:

<Directory />
AllowOverride All
</Directory>

Não esqueça de reiniciar o servidor depois de fazer as alterações no arquivo.

A configuração acima apresentada para urls amigáveis foi retirada de um projeto que utiliza o framework PHP – Code Igniter.

Sucesso!



Sobre o Autor

MarioSAM é faixa preta 2Dan de Taekwondo. Entusiasta do marketing online. Especulador do mercado financeiro. Projetista web com certificação SCJP da SUN. Com 10 anos de experiência em desenvolvimento de sistemas.