A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

O arquivo .htaccess

Seg

26

Fev

2007


21:03

(35 votos, média 4.49 de 5) 


Nível intermediário Arquivos .htaccess, também conhecidos como arquivos de configuração distribuída, oferecem meios para modificar as configurações de diretórios. O .htaccess é usado com frequência para bloquear acessos não autorizados, bloquear IPs, impedir listagens de diretórios, criar redirecionamentos e evitar o chamado "hot-linking".

Introdução

O .htaccess é um arquivo de configuração usado exclusivamente pelo servidor web Apache. Como o Apache domina amplamente o ambiente web, vale a pena conhecer este arquivo e seu imenso potencial. Um arquivo deste tipo, contendo uma ou mais diretrizes de configuração, pode ser colocado num diretório em particular para que suas diretrizes sejam aplicadas no diretório que contém o arquivo, assim como em todos os seu subdiretórios.

Se você hospeda seu site num servidor Linux com webserver Apache, existe uma boa probabilidade do seu hospedeiro ter disponibilizado seu acesso a arquivos .htaccess. Se você optou por um servidor Windows, pode esquecer... nunca vi um servidor Windows usando o webserver Apache sad

Bem, partindo do pressuposto que a dupla dinâmica Linux+Apache esteja à sua disposição, a primeira coisa é descobrir se você tem permissão para usar o .htaccess. Geralmente o serviço de hospedagem informa explicitamente esta permissão ou dá indicações indiretas do tipo "páginas de erro 404 personalizadas" ou "proteção de diretórios com senha". Se você tiver dúvidas, peça informações ao seu hospedeiro ou então crie seu próprio arquivo .htaccess, transfira-o para um diretório do seu site e teste-o: funcionou, está liberado smile

O nome deste arquivo é um pouco estranho. Aliás, parece que não tem nome - parece ser identificado apenas como uma extensão. Na verdade, o nome do arquivo é htaccess e o ponto antes do nome serve para indicar ao sistema Linux que se trata de um arquivo oculto (hidden). Portanto, se você criar seu .htaccess particular, não invente. Chamá-lo de arquivo.htaccess ou alguma página.htaccess não vai funcionar! O motivo é o seguinte: existe um arquivo de configuração do servidor Apache no qual o nome dos arquivos de configuração distribuída são definidos. Neste arquivo de configuração existe uma diretiva que diz AccessFileName .htaccess e os serviços de hospedagem mantêm este nome padrão para não dar nó na cabeça dos seus clientes. É claro que o "dono" do servidor web pode mudar esta diretiva para, por exemplo, AccessFileName .config. Neste caso você precisa desta informação para criar arquivos de configuração distribuída no seu site: ao invés de .htaccess, o nome destes arquivos teria que ser .config.

Criando arquivos .htaccess

O .htaccess é um arquivo ASCII. Use seu editor de texto preferido certificando-se de que esteja com o rearranjo de linhas (word wrap) desativado para evitar a inclusão de caracteres de quebra de linha, geralmente não visíveis, que poderão gerar erros. Se você usar o Bloco de Notas do Windows, cuidado quando for salvar seu arquivo: como padrão, este editor de texto adiciona a extensão .txt e um arquivo com o nome .htaccess.txt não vai ser reconhecido pelo Apache.

Leia com atenção as diretrizes do Apache, em especial as do .htaccess, de preferência na fonte (nas Fontes de Referência desta página você encontra um link para o site oficial do Apache). Coloque cada uma das diretrizes em UMA LINHA própria. Confira cuidadosamente a sintaxe - atenção especial para aspas e caminhos (path).

De início, implemente uma diretriz por vez: crie o arquivo, faça o upload e teste. Deu caca? Neste caso, ou há erros de sintaxe ou seu servidor não permite o uso da diretriz em questão (ela pode estar bloqueada no arquivo de configuração principal do Apache). Volte para a versão anterior e continue seu trabalho. No início é penoso, mas este procedimento permite estabelecer as limitações impostas pelo seu servidor e faz com que você se familiarize com o funcionamento dos arquivos de configuração distribuída.

O upload de arquivos .htaccess precisa ser no modo ASCII, não no modo BINARY. Após o upload, verifique se a permissão é 644 (RW-R--R--). Isto faz com que o arquivo possa ser usado pelo servidor mas evita que seja lido pelo browser (o que comprometeria seriamente a segurança).

Não saia na louca pondo arquivos .htaccess em tudo que for diretório. Vá com calma. Analise inicialmente sua real necessidade e sua melhor localização, implemente um arquivo por vez e TESTE tudo antes de continuar. Lembre-se que arquivos .htaccess atuam sobre o diretório onde estão localizados e sobre todos os respectivos subdiretórios. Isto significa que, colocando um .htaccess no diretório raiz, todos os diretórios do site serão afetados. Digamos que exista um .htaccess no diretório raiz atuando sobre todos os outros diretórios e que você quer definir propriedades diferentes para o diretório raiz/texto/escondido/. Neste caso, crie o arquivo desejado e coloque-o no diretório /escondido. Este último tomará o lugar do que está no diretório raiz.

É necessário um cuidado especial quando se usa múltiplos arquivos .htaccess. A coisa mais fácil é criar loops infinitos, que "penduram" o servidor. Por exemplo, você redireciona uma página para outra que esteja num diretório que redireciona a referida página novamente para a página original... já viu, né?

Nos tópicos seguintes você encontra alguns exemplos de uso de arquivos de configuração distribuída. Talvez isto facilite um pouco as coisas, mas não encare os exemplos como "prato pronto" porque, a não ser que você possa "pilotar" seu servidor, tem aquela história da configuração central do Apache.

Mudar a página default

DirectoryIndex é a diretriz que permite especificar qual arquivo deve ser carregado quando chegar uma solicitação de diretório ou URL que não especifique uma página em particular (tipo http://www.numaboa.com/). Normalmente a página default é index.html e a chamada do exemplo é transformada em http://www.numaboa.com/index.html. Se você quiser mudar as regras do jogo, não tem problema:

DirectoryIndex adoropizza.html

Se o seu .htaccess estiver no diretório raiz, esta diretriz faz com que a página default de todos os diretórios do seu site passe a ser adoropizza.html. Tem mais. Se você quiser usar outras páginas (ou até scripts) como default, basta adicionar as referências a gosto:

DirectoryIndex adoropizza.html index.php home.htm index.cgi index.pl

A linha acima, se o arquivo .htaccess estiver no diretório raiz, faz com que a procura da página default siga a lista especificada: adoropizza.html é a primeira a ser procurada; se for encontrada, ela é enviada para o usuário e a procura pára por aí; se não for encontrada, index.php é a próxima... e assim por diante, até index.pl. Caso nenhum dos arquivos relacionados seja encontrado, aí entra o famigerado erro 404.

Lembre-se que todos os diretórios abaixo do diretório raiz obedecem as regras ditadas pelo primeiro .htaccess acima deles, a não ser que o diretório possua seu próprio .htaccess. Se não existirem outros .htaccess em subdiretórios, para todos os diretórios do site vale o .htaccess do diretório raiz - as páginas default serão sempre as mesmas.

Mesmo não personalizando um .htaccess próprio, as páginas default costumam ser index.html, index.htm, default.html, default.htm, etc, porque o pessoal do serviço de hospedagem já fez esta configuração inicial no Apache.

Já usei este expediente para "proteger" alguns diretórios que continham gráficos, midis ou scripts. Como não queria que fossem listados, colocava um .htaccess no diretório alvo indicando uma página inexistente: Tchan! erro 404! Solução pouco elegante, mas eficaz. Eu disse "usei", não uso mais. Hoje utilizo redirecionamentos ou scripts PHP.

Informações adicionais