Desvendando o arquivo .htaccess

Qual webdesigner que já não esbarrou no famoso arquivo .htaccess e se perguntou: pra que serve esse arquivo? Na dúvida, melhor não mexer. Para que você não passe por isso novamente, vamos desvendar todos os segredos desse arquivo.

Antes de continuarmos, vamos definir o que é o arquivo .htaccess.
O .htaccess é um arquivo que fica no servidor web e serve para configurar o tipo de acesso a esse servidor. Com ele, pode-se controlar diversos parâmetros, tais como: acesso restrito (com ou sem uso de senha), páginas de erro padrão, página padrão de acesso ao site, acesso com e sem o “www”, redirecionar diretivas, entre outros. O uso correto do arquivo .htaccess provê grande auxílio no SEO do site.

Nota: Ao colocar um arquivo .htaccess na pasta raiz de um site, ele atuará sobre todas as pastas deste. Mas, um arquivo .htaccess numa subpasta anula a ação do anterior passando a agir sobre essa pasta e suas subpastas.

Exemplo de um arquivo .htaccess comentado:

// ——- Autenticação com senha ativado ———–//
deny from all
AuthUserFile /site/.htpasswd
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user

//——- páginas de erro padrão ———–//
ErrorDocument 400 erro400.html
ErrorDocument 401 erro401.html
… xxx erroXXX.html
ErrorDocument 504 erro504.html
ErrorDocument 505 erro505.html
RewriteEngine on

//———– Evitando Conteúdo duplicado ———–//
RewriteCond %{HTTP_HOST} ^(mundoseo.com.br)(:80)? [NC]
RewriteRule ^(.*) http://www.mundoseo.com.br/$1 [R=301,L]

//———– Página Padrão ———–//
DirectoryIndex páginadefault.html

//———– Redirecionamento Permanente ———–//
Redirect permanent www.movapermanentedaqui.com www.movidopermanenteparaca.com

//———– Redirecionamento Temporário ———–//
Redirect temp www.movatemporariodaqui.com www.movidoparacatemporario.com
order deny,allow

//——— Páginas permitidas ————-//
allow from www.endereçopermitido.com.br

//——— Páginas Bloqueadas ————-//
deny from www.endereçonegado.com.br

Vamos às requisições do código:

Nota: Mantenha o seu arquivo .htaccess sempre organizado e não coloque instruções desnecessárias para não pesar o arquivo, pois, o servidor o processa sempre que há uma requisição.

Comentários: para inserir um comentário utilize um # antes do conteúdo da linha.

Não listar o conteúdo de um diretório:

Quando se tenta acessar um diretório, em ausência de um arquivo de índice, o Apache mostra por defaut o conteúdo do diretório. Se quisermos impedir a visualização desse conteúdo basta criar um arquivo de índice, por exemplo, index.html. Existe também uma solução mais elegante mediante a diretiva Options, basta inserir o comando abaixo no .htaccess:

Options -Indexes

Página padrão:

Também poderíamos utilizar a diretiva DirectoryIndex, que especifica que arquivos atuam como índice, e que arquivo mostrar no caso de que estes não se encontrem. Por exemplo:

DirectoryIndex index.php index.html index.htm /proibido.php

Isto indicaria ao servidor que deve buscar os arquivos index.php, index.html ou index.htm, nessa ordem, e no caso de não encontrar nenhum deles, carregar o arquivo proibido.php.

Página de erro (exemplo erro 404):

Primeiramente, crie o layout da página de erro. Depois, inclua o código.

ErrorDocument 404 http://www.meusite.com/404.html

Você pode especificar qualquer arquivo que desejar para a personalização do erro e o que deve ser feito para implementá-lo é somente adicionar uma linha de comando pra cada erro ao .htaccess com o seguinte formato:

ErrorDocument 404 erro404.html ou ErrorDocument 404 arq_inexist.htm
ErrorDocument 403 erro403.html
ou ErrorDocument 403 proibido.htm
ErrorDocument 500 erro500.php
ou ErrorDocument 500 erro_interno.asp

Escondendo a extensão da linguagem de script: pode-se aumentar a segurança mudando a extensão dos scripts para que os visitantes desconheçam qual linguagem está utilizando. # Make PHP code look like unknown typesAddType application/x-httpd-php .cool, desta forma, os arquivos .cool serão tratados como se fossem arquivos PHP. Deve-se renomear os arquivos PHP para a nova extensão, claro.

Bloquear acesso ao site por IP:

Sempre existem os malas que ficam vasculhando o seu site a procura de falhas pra causar problemas, então, é só bloqueá-los adicionando uma linha de comando com o seguinte formato:

order allow,deny
deny from 012.34.5.6
deny from 012.34.5.
allow from all

A primeira linha bloqueia e não permite que o IP de endereço 012.345.5.6 acesse o site. A segunda linha bloqueia o acesso para o bloco de 012.34.5.1 até 012.34.5.255. A terceira linha permite a todos os outros acessarem o site.

Se você quer somente visitantes do Brasil você poderia configurá-lo assim:

order allow,deny
deny from all
allow from 200.
alow from 201.

Quer bloquear os usuários de um determinado provedor/servidor e não sabe o range de IP, sem problemas:

order allow,deny
deny from .veloxzone.com.br
allow from all

Redirecionamento:

As formas de redirecionar páginas são diversas: javascript, PHP, HTML (http-equiv) e etc. Não é diferente com o .htaccess sendo bem simples também:

Redirect /dirantigo/pagina_velha.html http://www.seusite.com/dirnovo/pagina_nova.html

As 3 partes que compõem esta diretiva são separadas por espaço e note que o comando é composto de 3 partes que precisam estar numa mesma linha: a primeira é o comando Redirect seguido da localização do arquivo/diretório que você quer redirecionar, relativo ao diretório principal do seu site, e a terceira é o endereço completo do novo arquivo para o qual deve ser redirecionado. Há ainda a possibilidade de se redirecionar todo um diretório :

Redirect /dirantigo/ http://www.seusite.com/dirnovo/

As aplicações são várias, desde repor a informação de um arquivo que você mudou de diretório e/ou de nome até ao redirecionamento de um usuário que requisitou a visualização de um diretório não permitido, por exemplo, o de imagens.

Prevenindo-se contra “hot-linking”:

“Hot Linking” são links que apontam diretamente para arquivos não HTML e roubam/decrescem a sua banda contratada. É também possível evitar isso com o .htaccess, mas antes, verifique com o seu servidor se ele permite mod-rewrite. Segue abaixo o código:

RewriteCond %{HTTP_REFERER} !^http://seusite.com.br/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.seusite.com.br/.*$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp)$ – [F,NC]

O código acima apresenta um link quebrado para a imagem, mas se desejar, por exemplo, mostrar sua logo, use:

RewriteCond %{HTTP_REFERER} !^http://seusite.com.br/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.seusite.com.br/.*$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp)$ http://www.seusite.com/sua_logo.gif [R,L]

Impedindo a listagem de diretórios:

Existe sempre aquela situação de ter um diretório cheio de arquivos que não desejamos que sejam listados. Existem duas possibilidades pra se fazer isso: a primeira é criar um arquivo index.html vazio e colocar no diretório e a outra com o .htaccess: IndexIgnore * – Se este comando estiver no arquivo .htaccess do diretório principal, a listagem de todos os diretórios estarão desabilitadas. Mas você pode também especificar o tipo de arquivo que você não quer que seja listado:

IndexIgnore *.wmv *.jpg *.gif *.swf

Proibe a visualização do arquivo .htaccess:

order allow,deny
deny from all

Com estas informações você já pode configurar o seu arquivo .htaccess. Qualquer dúvida deixe um comentário.

Até a próxima.

Veja também: Crie o seu arquivo .htaccess com esse editor online

Fonte: 72DPI

Marcelo Alves

Mais artigos deste autor »

Marcelo Alves, graduado em Desenho Industrial com habilitação em Programação Visual pela Universidade do Estado de Minas Gerais. Atua como Webdesigner e Diretor de Criação desenvolvendo projetos de comunicação para web.


7 Comentários

Matheus
1

Opa, estava navegando e lendo sobre tecnologias e por acaso me deparei com este post. Algumas coisas eu já sabia, mas outras eu aprendi! 🙂
Parabéns!

Marcelo Alves
4

tem como você colocar login e senha na pasta que contem esse arquivo e impedir que pessoas não autorizadas façam o download. Não sei se entendi direito a sua dúvida. é isso mesmo?

Silas Vasconcelos
6

Muito bom mesmo cara estou estudando sobre .htaccess e tudo de principal que estava a procura você explicou direitinho,
NOTA 10

Luiz
7

quero saber como tirar a extensão .php
tipo se o cara digita / contato abre a pagina, se caso digitar /contato.php manda para o erro 404

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!