Ir para conteúdo

Full Tutorial .htaccess


Felipemv

Posts Recomendados

Introdução:

O htaccess é um arquivo cujo nome é .htaccess, como se fosse apenas identificado pela sua extensão (possui um ponto e a extensão). É um arquivo de configuração usado pelo servidor web Apache - e apenas pelo Apache. Como o Apache domina amplamente o ambiente web, vale a pena conhecer este arquivo e seu grande potencial.

FUNÇÕES DO htaccess:

A função mais conhecida do htaccess é a de possibilitar a apresentação de páginas personalizadas para o erro 404 (arquivo inexistente). A mais conhecida, mas apenas uma das muitas funções possíveis: proteger diretórios com senha, redirecionamento automático, alteração de extensões de arquivos, bloqueio de usuários com determinados endereços IP, autorização de IPs específicos, impedir listagem de diretórios, ativar SSI, usar páginas índice diferentes, adicionar tipos MIME, evitar o "hot linking" e outras.

As principais funções do htaccess serão abordadas, explicando e exemplificando seu uso, como também apresentando suas limitações e perigos.

EXEMPLOS DE CONFIGURAÇÃO:

-Documento de erro:

Para especificar seus próprios documentos de erro, tudo o que você precisa é adicionar o seguinte comando, em UMA LINHA, ao seu arquivo htaccess:

 

    ErrorDocument code /diretorio/nomearquivo.ext    ou    ErrorDocument 404 /erros/naoencontrado.html    e, de forma análoga,    ErrorDocument 500 /erros/errointerno.html

 

Você pode usar os nomes que quiser para seus documentos de erro - para facilitar, recomendo que lembrem a função das mesmas - e colocá-los em qualquer diretório que seja acessível pela web através de uma URL. A primeira barra corresponde ao diretório raiz do site. Eu, pessoalmente, prefiro mantê-los num diretório próprio para facilitar a manutenção e para poder controlar spiders indexando estas páginas através de um arquivo ROBOTS.TXT.

Na hipótese de capturar todos os erros acima mencionados e direcionar o usuário para páginas específicas, o arquivo htaccess teria a seguinte configuração:

ErrorDocument 400 /erros/badrequest.html	ErrorDocument 401 /erros/authreqd.html	ErrorDocument 403 /erros/forbid.html	ErrorDocument 404 /erros/notfound.html	ErrorDocument 500 /erros/serverr.html

 

Não se esqueça de que cada precisa estar numa linha única própria. Pode-se também especificar um endereço URL completo, como por exemplo http://seusite.com/erros/notfound.html, apesar de que a forma padrão é o endereçamento relativo como mostrado acima.

-Proteção por senha:

A primeira coisa a fazer é criar um arquivo chamado .htpasswd. A convenção do nome para este arquivo é a mesma do .htaccess. É como se fosse um arquivo sem nome com a extensão .htpasswd, ou seja, um ponto seguido de htpasswd.

Este arquivo conterá o NOME e a SENHA ENCRIPTADA de todos os usuários que poderão ter acesso à area protegida. Por exemplo, o usuário com nome numaboa e senha numaboa pode ser registrado como uma das alternativas abaixo:

 numaboa:$1lX5fd*H1jPk   numaboa:62V4UJ/K/c/Wc   numaboa:81x8xIBUZnuLw

É claro que ninguém em sã consicência vai usar nome e senha iguais, mas este é apenas um exemplo. Observe que o nome fornecido é colocado no início, seguido por dois pontos e pela senha encriptada de acordo com o método proposto para o Apache: para Unix e Linux é usada a função crypt() do próprio Apache (descrito na documentação htpasswd do Apache) e para Windows é o MD5 modificado para Apache (descrito na rfc131 e que você pode encontrar na Internet RFC/STD/FYI/BCP Archives).Se você procurar pela web vai encontrar alguns sites que oferecem o serviço de encriptação com os chamados htpasswrd generator.

CONFIGURANDO O ARQUIVO htaccess

 

 AuthUserFile /usr/local/seu/diretorioSeguro/.htpasswd   AuthGroupFile /dev/null   AuthName AreaProibida   AuthType Basic   require user numaboa

 

A primeira linha corresponde ao caminho completo do servidor para o seu arquivo htpasswd. Note que não se trata de uma URL e sim de um caminho de servidor. Verifique qual é o caminho correto servidor do seu site (eu costumo usar a função phpinfo() do PHP). Saiba também que, se você colocar o arquivo htaccess no diretório raiz, todo o site ficará protegido por senha -- o que, provavelmente, não é a sua intenção.

Você pode usar qualquer nome para o seu arquivo de senhas, como senhas.txt ou qualquer outra coisa. Basta referenciá-lo corretamente. Além disso, se por acaso o caminho contiver nomes de diretórios com espaços, então será preciso colocar o caminho entre aspas -- por exemplo "/usr/local/diretorio seguro/senhas.txt".

AuthName é o nome da área protegida. Também pode ser qualquer nome que você desejar, mas evite caracteres especiais como $, %, ç ou ã.

AuthType é o tipo de autenticação. Neste caso foi escolhida a Basic porque se trata de uma autenticação porque estaremos usando a autenticação HTTP básica.

Com require user numaboa estamos indicando que apenas o usuário numaboa poderá ter acesso a esta área. Se quisermos aumentar a lista de usuários permitidos, devemos substituir require use numaboa por require valid-user. Neste caso, todos os usuários que estiverem no arquivo de senhas poderão acessar a área protegida.

Se quisermos que apenas os usuários explicitamente mencionados ou seja, apenas alguns da lista de senhas, possam acessar a área protegida, o bloco de código precisa ser:

AuthUserFile /usr/local/seu/diretorioSeguro/.htpasswd   AuthGroupFile /dev/null   AuthName AreaProibida   AuthType Basic   <Limit GET>   require user numaboa   require user sobmedida   </Limit>

 

-Proteção por senha:

O htaccess usa Redirect para controlar qualquer solicitação para uma página específica (ou uma localização não específica que, infelizmente, leva a loops infinitos com certa facilidade) e, se encontrar a dita solicitação, ele a redireciona para a página que você especificou:

Redirect /dirAntigo/arqAntigo.html http://yoursite.com/dirNovo/arqNovo.html'>http://yoursite.com/dirNovo/arqNovo.html

Note que a diretiva é composta de 3 partes que precisam estar numa mesma linha: o comando Redirect, a localização do arquivo/diretório que você quer redirecionar relativa ao diretório raiz do seu site (/dirAntigo/arqAntigo.html corresponde a seusite.com.br/dirAntigo/arqAntigo.html) e a URL completa para onde a solicitação deve ser redirecionada. Cada uma das 3 partes é separada por UM espaço, mas tudo em uma única linha. Você também pode redirecionar um diretório inteiro usando simplesmente

Redirect /dirAntigo http://yoursite.com/dirNovo/

Usando este método, você pode redirecionar todo o conteúdo do diretório, independente do que você fizer com a sua estrutura de diretórios. É o método de efeito global mais rápido que existe.

-Bloqueando IPs:

Adicione o seguinte código no seu arquivo htaccess -- logicamente mudando os IPs para os desejados -- pondo cada comando numa linha própria:

order allow,denydeny from 123.45.6.7	deny from 012.34.5.allow from all

Você pode recusar endereços IP ou blocos IP. O código acima nega acesso ao site se as requisições vierem do endereço IP 123.45.6.7 ou de qualquer subdomínio do bloco IP 012.34.5 (012.34.5.1, 012.34.5.2, 012.34.5.3, etc). Imagine só, com a segunda opção você pode até bloquear acessos vindos de determinado país. Coisa de louco...

É claro que, se você desejar, pode bloquear o acesso de todos usando deny from all ao invés de allow from all, mas isto não seria muito lógico -- a não ser que queira fechar para balanço ;))). Mas nem só de endereços IP vive o bloqueio. Você também pode usar nomes de domínios, por exemplo, allow from .numaboa.com ou deny from www.pentelho.com.br. O primeiro libera www.numaboa.com, andre.numaboa.com, etc. O segundo bloqueia apenas o que vier de www.pentelho.com.br.

-Mudando a pagina inicial:

Que negócio é este de DirectoryIndex? Nada demais. É apenas o comando que permite especificar qual o arquivo que deve ser carregado quando chegar uma solicitação de diretório ou URL que não especifiquem uma página em especial (tipo http://www.numaboa.com/). Se você cansou de ver entrar seusite.com.br/index.html não tem problema -- pode mudar para seusite.com.br/adoropizza.html.

DirectoryIndex adoropizza.html

Isto faz com que a página default de todos os diretórios do seu site passe a ser adoropizza.html. Mas, se você quiser poder usar outras páginas ou até scripts como default, basta adicionar referências a gosto:

DirectoryIndex adoropizza.html index.cgi index.pl nhaca.htm

Adicionando a linha acima ao seu arquivo htaccess e imaginando que o arquivo htaccess esteja no seu diretório raiz, o resultado será o seguinte: quando um usuário digitar seusite.com, adoropizza.html é a primeira a ser procurada no seu diretório raiz; se for encontrada, ela é enviada ao usuário e a procura pára por aí; se não for encontrada, index.cgi é a próxima... e assim por diante até nhaca.htm. Caso nenhum dos arquivos relacionados seja encontrado, aí entra o famigerado erro 404.

Lembre-se de 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. É por isso que, mesmo não personalizando um htaccess próprio, as páginas default são index.html, index.htm, default.html, default.htm, etc -- o pessoal do servidor já fez esta configuração inicial.

Já usei este expediente para "proteger" alguns diretórios, geralmente com gráficos ou scripts, os quais não queria que fossem listados. Fazia um htaccess para o diretório indicando uma página inexistente: Tchan! erro 404! Solução pouco elegante mas eficaz. Eu disse "usei", não uso mais. Hoje utilizo redirecionamentos, aliás, nosso próximo tema.

É isso,

espero ter ajudado vocês

até mais

felipemv

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
  • Respostas 37
  • Created
  • Última resposta

Top Posters In This Topic

  • 2 weeks later...
  • 2 weeks later...

manow...

soh fikei com uma duvida aki..

tp...

eu rodo no windows o meu apache...

dai eu to colokando o .htpasswd e nao ta dando certo...

Arquivo .htaccess

 

AuthUserFile /access/.htpasswd  AuthGroupFile /dev/null  AuthName AreaRestrita  AuthType Basic  require user valid-user.

 

Arquivo .htpasswd (que está localizado na pasta "/access")

 

mxlukax:edR.B7dYAN6JE

 

Por favor... me diga o que estou fazendo de errado...

ficaria mtu agradecido...

FLW!

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
  • 1 month later...
  • 5 months later...
  • 3 months later...
  • 3 weeks later...

;(: MEU DEUS DO CÉU! Por incrivel que parece ninguen consegue me ajuda a faze um site legal!!! Eu só quero coloca meu site ON (para acc do 7.8), coloca um IP que o server list não regeite e ganha uma speed do meu pai! (meu pc é bom mais minha net não é tão boa!!!

PLX ALGUEN PODE ME SOCORRER! CASO ALGUEN TENHA PACIENCIA COM NOOBS FEITO EUUUU EEE QUEIRA INSINA A BOTAR UM SERVER ON EEE OTRAS COISAS PLX ME ADC AEE willian_darkboy@hotmail.com! :confused: :embarrest:

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...