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
7 Comentários
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!
Muito bom o artigo..
eu mesmo vira e meche tenho várias dúvidas achei aqui do nada.!
valeu mesmo
Xará, coloquei este arquivo
http://www.meusite.com.br/solucoes/interface.inc
Se eu tentar baixá-lo via wget eu consigo. Como fazer pra impedir de baixar este arquivo via wget ?
Tem como modificar algo no .htacess de maneira q solicite autenticação pelo wget também?
Algum outro meio ?
Por favor, ajuda a gente ai!
OBRIGADO!!
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?
@Peter … acho que usando esta regra voce “quase” consegue o que voce quer.
RewriteCond %{HTTP_USER_AGENT} wget [NC]
Eu digo quase porque é possivel trocar o user agent do wget
-U, –user-agent=AGENT identify as AGENT instead of Wget/VERSION.
Fonte: http://www.unitedforums.co.uk/vb/website-development-scripting/10926-how-block-wget.html
Muito bom mesmo cara estou estudando sobre .htaccess e tudo de principal que estava a procura você explicou direitinho,
NOTA 10
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