HTACCESS
Autor: Adriano Fialho | Publicado: 2012-08-27T08:19:00-07:00

&nbsp;Desvendando o arquivo htaccess

O arquivo .htaccess é muito útil no controle de permissões e acesso do servidor. A configuração do htaccess podemos:&nbsp; proteger arquivos e diretórios do servidor , redirecionar diretivas ,roteamento de urls, redirecionar páginas, permitir acesso, definir a página index e auxiliar nas técnicas de SEO, etc.
Vamos tentar desvendar os mistérios do 
arquivo .htaccess. aprendendo a 
manusea-lo corretamente.
 

Impedir listagem de uma pasta
Geralmente quando
 criamos uma pasta sem um arquivo de índice (index.html, por exemplo), é
 comum que o conteúdo desta pasta seja exibido por padrão, mas você pode
 mudar isso com uma simples linha:

Options –Indexes

Página inicial padrão
Digamos que a página inicial do seu site não esteja no arquivo index.
 O que fazer? Renomear o arquivo? Não, isso não se faz necessário. Basta
 dizer ao Apache quais arquivos podem ser considerados como página 
inicial ou de índice (tradução da palavra index). É muito simples fazer 
isso, bastando incluir a linha a seguir em seu arquivo:

DirectoryIndex index.php index.html index.htm /proibido.php
No exemplo acima, os arquivos index.php, index.html e index.htm serão considerados como arquivos de índice e caso nenhum deles exista, o arquivo proibido.php, presente no diretório raiz, será mostrado ao visitante.

Página de erro padrão
Quando
 um usuário visita seu site e por algum motivo cai numa página de 
arquivo não encontrado ou se depara com um erro em seu servidor, você 
poderá personalizar o que ele verá. Geralmente, os servidores exibem uma
 página em branco com o nome do erro em destaque e um texto em inglês 
comentando o ocorrido. Você pode mudar isso com os códigos abaixo:

ErrorDocument 404 erro404.html ErrorDocument 403 erro403.html ErrorDocument 500 erro500.html
Ou…

ErrorDocument 404 arquivo_inexiste.html ErrorDocument 403 proibido.html ErrorDocument 500 erro_interno.html
Assim
 você poderá personalizar o que seu visitante verá e dar informações 
úteis sobre o erro obtido e maneiras dele sair daquela página e voltar 
aos trilhos, continuando a visita em seu site, mas em outra página 
devidamente funcional.

Esconder a extensão da linguagem do script
Esta
 dica serve para evitar que espertinhos descubram qual linguagem você 
usa em seu servidor, alterando as extensões dos arquivos que compõem o 
site. Digamos que a sua página seja escrita em PHP e deseja que os 
arquivos com final .cool sejam interpretados como .php. O código 
necessário é o seguinte:

typesAddType application/x-httpd-php .cool
Quer ainda mais “privacidade”? Então faça com que endereços digitados sem extensão abram normalmente. Assim você pode digitar seusite.com/contato que a página contato.cool abrirá normalmente, ocultando a extensão do arquivo. O código necessário é este:

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.cool -f RewriteRule ^(.*)$ $1.cool

Bloquear acesso ao site através de IP
Evite
 que alguma pessoa mal intencionada acesse seu site em busca de falhas e
 para fazer bagunça bloqueando o IP do indivíduo com o seguinte código:

order allow,deny deny from 012.34.5.6 deny from 012.34.5. allow from all
A segunda linha impede que o IP específico 012.34.5.6 acesse o site, já a terceira linha impede todos os IPs desde 012.34.5.1 até 012.34.5.255 acessem seu site. A quarta linha permite que todos os demais IPs te visitem normalmente.

Impedir acesso de um determinado provedor
Não
 sabe o IP ao certo, mas conhece o provedor que o encrenqueiro usa? 
Então bloqueie o acesso desta empresa através do código abaixo:

order allow,deny deny from .veloxzone.com.br allow from all
No
 exemplo acima, qualquer pessoa que use o serviço da Oi não conseguirá 
acessar o seu site. Para bloquear a GVT, por exemplo, você trocaria .veloxzone.com.br por .gvt.net.br ou adicionaria uma linha extra começando com deny from. A ultima linha permite que usuários de qualquer outro provedor tenha acesso livre.

Redirecionando páginas e diretórios
Há um monte de maneiras de redirecionar uma página ou pasta para outro lugar como pode ser visto a seguir.

Redirect /dirantigo/pagina_velha.html http://www.seusite.com/dirnovo/pagina_nova.html
Neste exemplo, quando um usuário acessa o arquivo pagina_velha.html presente no diretório dirantigo é redirecionado para o arquivo pagina_nova.html no diretório dirnovo.
 A única coisa que separa os termos é um espaço em branco, não uma 
quebra de linha. Obviamente, o exemplo acima trata de um arquivo em 
particular, mas para redirecionar uma pasta inteira, use o código a 
seguir:

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

Impedir roubo de imagens
Sempre
 tem aquele espertinho que adora se aproveitar dos outros e poupar 
espaço em seu próprio disco rígido roubando imagens a partir de outros 
sites e servidores através de um link direto. O nome desta detestável 
prática é hotlink e você aprenderá agora a impedi-la.

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]
Assim,
 todo indivíduo que copiar uma imagem sua irá recebe-la quebrada caso 
ela carregue num domínio diferente do especificado nas duas primeiras 
linhas. Para pregar uma peça e mostrar uma imagem nada a ver ou o logo 
do seu blog/site/empresa, use o código a seguir:

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]

Proibindo a listagem do diretório
Já
 comentamos isso mais acima, porém este código serve para impedir a 
listagem geral de todos os diretórios do seu site e ainda permite 
especificar quais arquivos não devem ser mostrados.

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

Redirecionamento 301 (permanente)
Digamos
 que você tem um site em um servidor ou pasta e mais outro site em outro
 servidor ou outra pasta. Você pode fazer um redirecionamento permanente
 que indica aos buscadores e navegadores que aquele endereço não deve 
mais funcionar e que foi movido para outro endereço. No servidor ou 
pasta do site antigo, use o seguinte código:

Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://www.novosite.com.br/$1 [R=301,L]
Trocando novosite.com.br pelo novo endereço.

Forçar acesso ao site com www
Evite
 que o navegador do seu visitante acesse o site sem www redirecionando-o
 para o endereço que começa com www usando o código a seguir:

Options +FollowSymlinks RewriteEngine on RewriteCond %{http_host} ^seusite.com.br [NC] RewriteRule ^(.*)$ http://www.seusite.com.br/$1 [r=301,NC]

Forçando o acesso com HTTPS
Se
 você possui um certificado SSL e deseja que todos que acessem seu site 
usem esse protocolo de conexão segura, deve adicionar o seguinte código 
em seu HTACCESS:

RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Desta forma, quem acessar seu site sem digitar HTTPS na barra de endereços será redirecionado automaticamente.

Proibindo exibição do arquivo .htaccess
Depois de tanta ajuda do arquivo, vamos agora ajuda-lo impedindo que ele possa ser acessado por qualquer um.

order allow,deny deny from all

Geradores de arquivos .htaccess
Se
 você quer criar um arquivo htaccess completo sem pesquisar cada 
comando, pode usar algumas ferramentas disponíveis na internet que te 
ajudam a gerar um arquivo htaccess perfeito para as suas necessidades em
 poucos minutos. Use os sites da lista a seguir e divirta-se!

HTACCESS File Generator;
Webmaster Toolkit HTACCESS Password Protection;
HTACCESS Generator.

Agora
 é só adicionar os códigos acima em seu arquivo .htaccess e aproveitar 
todos esses recursos. Lembre-se de manter seu arquivo organizado e limpo
 pois ele é processado a cada acesso que seu site recebe. Comente-o e 
cuide dele com carinho pois qualquer erro pode tirar seu site do ar. 
Lembrando que algumas dessas dicas dependem da existência do mod_rewrite instalado em seu servidor.

Ativando o mod_rewrite
Por
 padrão, o Apache vem com o mod_rewrite desativado, mas para ativa-lo 
basta editar uma linha do arquivo Conf/httpd.conf, removendo o símbolo #
 que vem antes de:

LoadModule rewrite_module modules/mod_rewrite.so
Agora procure pela seguinte linha:

AllowOverride None
E altere-a para:

AllowOverride All

&nbsp;Mais informações pode ser encontrado em: Htaccess Apache