Skip to main content

Olá amigos. Vocês sabiam que .htaccess significa Hypertext Access e pode ser usado em qualquer servidor Apache? Com ele você pode colocar sistema de URLs amigas, mudar a index de sua pasta, criar bloqueio contra hotlink, forçar o uso ou ausência de www, entre muitas outras possibilidades!

Bem, para poder usufruir deste pequeno tutorial, você precisa de um site e de um servidor Apache.

Gerando o .htaccess

Para fazer isto é simples. Abra o Bloco de Notas e coloque o conteúdo que desejar dentro dele. Mande salvar. Dê o nome de .htaccess e o tipo de arquivo como “Todos os arquivos”.

Depois de salvar basta enviar em uma pasta do seu site, as mudanças são aplicadas a todas os arquivos e pastas dentro da pasta que você enviou. Por exemplo: Eu enviei o meu .htaccess dentro da pasta principal “/”, logo, as mudanças ficam valendo em todo o site. Se eu enviar para “/downloads”, as mudanças deste arquivo ficam valendo para “/downloads” e todas as pastas dentro deste. Você pode mandar uma para “/” e outra para “/downloads”, o enviado para “/” faz com que as regras sejam usadas em todas as pastas, exceto em “/downloads”.

Páginas de erro

As páginas de erros aparecem quando o servidor de Internet encontra algo que não deveria estar acontecendo, como por exemplo, uma página não existe, ou você não tem permissão para abrir a pasta, etc.

Você pode fazer a sua página de erro como desejar. Em seguida, envie-as para seu servidor.

Alguns exemplos de erros:

400 – Erro de sintaxe
401 – Necessário usuário e senha que foram digitados de forma errada.
402 – Conteúdo fechado para usuários pagantes ou diretório privado.
403 – Falta de permissão.
404 – Arquivo não encontrado.
500 – Servidor com erros internos.
501 – O serviço solicitado não pode ser incluso no servidor.
502 – Servidor sobrecarregado.
503 – O gateway do servidor não respondeu a sua requisição.

Em seguida, coloque o code abaixo dentro de seu .htaccess.

ErrorDocument 400 /erro400.html
ErrorDocument 401 /erro401.html
ErrorDocument 402 /erro402.html
ErrorDocument 403 /erro403.html
ErrorDocument 404 /erro404.html
ErrorDocument 500 /erro500.html
ErrorDocument 501 /erro501.html
ErrorDocument 502 /erro502.html
ErrorDocument 503 /erro503.html

Neste exemplo, eu enviei as páginas de erro na mesma pasta da onde eu vou colocar o .htaccess, por isto a referencia é apenas “/”, se você tivesse enviado as páginas de erro para a pasta “/erros”, por exemplo, as referencias ficariam “/erros/erroXXX.html”.

Caso queira, você pode usar um endereço absoluto (https://brunokitsune.com/erros/erro404.html), ao invés de um relativo (/erro404.html) mas eu não recomendo.

Nota: Você pode dar qualquer nome para as páginas de erro, não precisa seguir o padrão erroXXX.html.

Rewrite Engine

A rewrite engine é um recurso que permite modificar diretórios ou regras, você precisa ativa-la para continuar com o tutorial. Para fazer isto, adicione a linha acima de todas as RewriteCond e todas as Rewrites Rules (que você verá abaixo).

RewriteEngine on

Dicas:

  • Coloque na primeira linha do documento (só precisa ativar uma vez para todo o documento).
  • Alguns servidores não aceitam que se ligue a Rewrite Engine.

O uso de www

Há alguns anos atrás, era necessário defirinir nomes de protocolos e de recursos para conseguir carregar um site. O uso do www (World Wide Web) era obrigatório para tal.

Com o passar dos anos, a tecnologia conseguiu deixar muitas coisas automatizadas e o protocolo (veja que é protocolo e não o uso total) do www torna-se desnecessário para a vasta maioria de servidores.

Este host aqui consegue carregar www.brunokitsune.com da mesma forma que carrega brunokitsune.com, por exemplo.

Cabe a você, web-master, definir o que é melhor para o seu site.

Forçando o uso do www

A Rewrite engine precisa estar ligada!

Muitos web-masters gostam ou mesmo requisitam seu uso. Se você é um deles e quer forçar o uso de www, basta adicionar o code abaixo em uma linha em branco do .htaccess.

Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^exemplo.com [NC]
RewriteRule (.*)$ http://www.exemplo.com/$1 [L,R=301]

Forçando o não uso do www

A Rewrite engine precisa estar ligada!

Isto faz com que os usuários que digitam www.exemplo.com caiam diretamente em exemplo.com.

Eis o conteúdo para colocar no .htaccess.

RewriteCond %{HTTP_HOST} ^www.exemplo.com$ [NC]
RewriteRule ^(.*)$ http://exemplo.com/$1 [R=301,L]

Proteção contra hotlink

A Rewrite engine precisa estar ligada!

Muitos sites tem um consumo enorme de banda porque outros sites indicam diretamente seu conteúdo, seja por usar hotlink de imagens, arquivos, etc.

Você, como mentor e web-master pode se sentir ofendido com isto e talvez queira proteger seus arquivos contra olhadas indiscretas. Afinal, não custa nada para o outro web-master linkar uma página (http://exemplo.com/meu_conteudo.html) ao invés do conteúdo direto (http://exemplo.com/meu_conteudo/minha_criacao.exe).

Então, vamos ao conteúdo para colocar no .htaccess.

RewriteCond %{HTTP_REFERER} !^http://(.+\.)?brunokitsune\.com/ [NC] 
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?rctbr\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(gif|jpg|jpeg|bmp|png|mp3|wma|wmv|avi|mpg|mpeg|zip|rar|7z|exe)$ http://exemplo.com/~bk/hotlink.jpe [R,NC,L]

Entendendo o conteúdo:

As linhas com endereços de sites indicam as páginas que podem fazer hotlink com o meu site. A linha RewriteCond %{HTTP_REFERER} !^$ significa todos os outros vão ser bloqueados.

A Rewrite Rule tem duas indicações notaveis:

  1. As extenções bloqueadas (gif|jpg|jpeg|bmp|png|mp3|wma|wmv|avi|mpg|mpeg|zip|rar|7z|exe).
  2. A imagem de redirecionamento quando é feito hotlink (http://exemplo.com/~bk/hotlink.jpe)

O correto seria hotlink.jpeg, certo? Errado! Se você colocar .jpeg, a imagem será bloqueada pela sua regra de hotlink! Colocando uma letra a menos na extenção da imagem, ela não é pega pela regra. Se você quiser, pode hospedar a imagem em um site dedicado a isto, então seria possível fazer isto porque, o arquivo está num servidor que aceita hotlink.

Mas atenção, esta regra pode ter o sentido inverso, ou seja: “Bloquear somente alguns e permitir os demais”. Como fazer isto? Simples! No exemplo abaixo, vamos imaginar que eu queira bloquear dois sites: Facebook e BlogSpot.

RewriteCond %{HTTP_REFERER} !^https://(.+\.)?facebook\.com/ [NC,OR] 
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?blogspot\.com/ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|png|mp3|wma|wmv|avi|mpg|mpeg|zip|rar|7z|exe)$ http://exemplo.com/~bk/hotlink.jpe [R,NC,L]

Vocês devem ter notado duas mudanças: RewriteCond %{HTTP_REFERER} !^$ sumiu e agora estamos usando o critério OR (ou).

URLs amigas

A Rewrite engine precisa estar ligada! Alguns sites tem endereços dificeis de acessar, principalmente quando trabalhamos com PHP, por exemplo, vamos imaginar que a página abaixo exista:

http://exemplo.com/~bk/conteudo.php?acao=mostrar

Atráves do sistema de URLs amigas, podemos tranformar isto em:

http://exemplo.com/~bk/mostrar

Mais simples, não? Como fazemos isto?

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)/?$ /conteudo.php?acao=$1

O -f e -d indicam que não devem ser considerados arquivos e diretórios. A última linha é a sua regra redirecionamento, neste caso, o $1 significa uma variavel. Para mais informações, visite este link.

Mudando a index

Muitas vezes você está enviando uma surpresa para a index de seu site e não quer ninguém olhando antes do tempo. Podemos forçar o usuário a ver outra “index” ao acessar o seu site (http://exemplo.com/~bk/).

DirectoryIndex construcao.html

Fazendo isto, a index passa a ser construcao.html. Você também poderia usar uma pasta com conteúdo, desta forma:

DirectoryIndex /contrucao/index.html

Espero ter colaborado com vocês da melhor forma possível, qualquer dúvida entre em contato.