O arquivo de configuração do Apache .htaccess é um ponto difícil e importante. Nunca me decidi a aprender com cuidado. Sempre pensei que o método Redirect pertence ao mod_rewrite e fico confuso ao usá-lo. Encontrei um tutorial muito bom hoje e, enquanto o aprendia, anotei algumas reflexões.
atualizado: corrija continuamente alguns pequenos problemas
Fonte: Guia completo para .htaccess
Referência oficial: Referência rápida da diretiva
1 Introdução Introdução <br />Nome do arquivo.htaccess atributo 644 (RW-R–R–)
htaccess afetará todos os subdiretórios no diretório onde está localizado. Observe que a maior parte do conteúdo deve ser mantida dentro de uma linha e não será agrupada.
2 Documentos de erro Documentos de erro
Documento oficial: Diretiva ErrorDocument
Documento de código ErrorDocument
exemplo
Documento de erro 400 /errors/badrequest.html
Documento de erro 404 http://seusite/errors/notfound.html
ErrorDocument 401 “Autorização necessária”
(Observe que quaisquer aspas duplas que aparecem posteriormente no conteúdo precisam ser escapadas como ")
Códigos de status HTTP comuns
Solicitações de clientes bem-sucedidas
200 OK
201 Criado
202 Aceito
203 Informações Não Autoriais
204 Sem conteúdo
205 Redefinir conteúdo
206 Conteúdo Parcial
Solicitação do cliente redirecionada
300 múltiplas escolhas
301 movido permanentemente
302 Movido Temporariamente
303 Ver outro
304 não modificado
305 Usar proxy
Erros de solicitação do cliente
400 Solicitação incorreta
Autorização 401 necessária
402 Pagamento necessário (ainda não usado)
403 Proibido
404 não encontrado
Método 405 não permitido
406 Não Aceitável (codificação)
407 Autenticação de proxy necessária
408 Solicitação expirou
409 Solicitação conflitante
410 desapareceu
411 Comprimento do conteúdo necessário
412 Falha na pré-condição
413 Solicitar entidade muito longa
414 Solicitação de URI muito longa
415 Tipo de mídia não suportado
Erros do servidor
500 Erro interno do servidor
501 Não Implementado
502 Bad Gateway
503 Serviço indisponível
504 Tempo limite do gateway
505 Versão HTTP não suportada
3 Proteção por senha Proteção por senha
Documento oficial: Autenticação, Autorização e Controle de Acesso
Suponha que o arquivo de senha seja .htpasswd
AuthUserFile /usr/local/safedir/.htpasswd (o nome do caminho completo deve ser usado aqui)
AuthName Digite Senha
AuthType Básico
Dois métodos de verificação comuns:
Requer userwindix
(Apenas o usuário windix tem permissão para fazer login)
Exigir usuário válido
(Todos os usuários legais podem fazer login)
Dica: Como gerar um arquivo de senha usando o comando htpasswd (incluído no Apache)
Um arquivo de senha precisa ser criado para a primeira geração
htpasswd -c.htpasswd usuário1
Adicionar novos usuários mais tarde
htpasswd .htpasswd usuário2
4 Habilitando SSI via htaccess Permitir função SSI (Server Side Inclusive) por meio de htaccess
AddType texto/html .shtml
AddHandler analisado pelo servidor .shtml
Índices de opções que FollowSymLinks inclui
DirectoryIndex index.shtml index.html
5 Bloqueio de usuários por IP Bloqueio de acesso de usuários com base em IP
ordenar permitir, negar
negar de 123.45.6.7
negar de 12.34.5 (endereço inteiro da classe C)
permitir de todos
6 Bloqueio de usuários/sites por referenciador Bloqueio de usuários/sites com base em referenciador <br />Requer módulo mod_rewrite
Exemplo 1. Bloqueio de um único referenciador: badsite.com
RewriteEngine ativado
# Opções + Seguir links simbólicos
ReescreverCond %{HTTP_REFERER} badsite.com [NC]
RewriteRule .* - [F]
Exemplo 2. Bloquear vários referenciadores: badsite1.com, badsite2.com
RewriteEngine ativado
# Opções + Seguir links simbólicos
ReescreverCond %{HTTP_REFERER} badsite1.com [NC,OR]
ReescreverCond %{HTTP_REFERER} badsite2.com
RewriteRule .* - [F]
[NC] - Não diferencia maiúsculas de minúsculas
[F] - 403 Proibido
Observe que a instrução "Options +FollowSymlinks" está comentada no código acima. Se o servidor não definir FollowSymLinks na seção httpd.conf, você precisará adicionar esta frase, caso contrário, você receberá um erro "500 Internal Server error".
7 Bloqueio de bots maliciosos e ripadores de sites (também conhecidos como navegadores offline) Bloqueio de bots maliciosos e navegadores offline <br />Requer módulo mod_rewrite
Rastreadores ruins? Por exemplo, alguns rastreadores que capturam endereços de e-mail de spam e rastreadores que não estão em conformidade com o robots.txt (como o baidu?)
Eles podem ser julgados com base em HTTP_USER_AGENT
(Mas há ainda mais desavergonhados como "Zhongsou zhongsou.com" que definem seu próprio agente para "Mozilla/4.0 (compatível; MSIE 5.5; Windows NT 5.0)". Eles são muito desonestos e não podem fazer nada.)
RewriteEngineOn
ReescreverCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:[email protected] [OU]
ReescreverCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
ReescreverCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download Demônio [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express WebPictures [OR]
ReescreverCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
ReescreverCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb [OU]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^ Vá em frente, consegui [OU]
ReescreverCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
ReescreverCond %{HTTP_USER_AGENT} ^HMVer [OR]
ReescreverCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Imagem Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Imagem Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy Biblioteca [NC,OR]
ReescreverCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet Ninja [OR]
ReescreverCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC Web Spider [OR]
ReescreverCond %{HTTP_USER_AGENT} ^larbin [OR]
ReescreverCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass Downloader [OR]
Ferramenta RewriteCond %{HTTP_USER_AGENT} ^MIDown [OR]
RewriteCond %{HTTP_USER_AGENT} ^Senhor PiX [OR]
ReescreverCond %{HTTP_USER_AGENT} ^Navroad [OR]
ReescreverCond %{HTTP_USER_AGENT} ^NearSite [OR]
ReescreverCond %{HTTP_USER_AGENT} ^NetAnts [OR]
ReescreverCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net Vampiro [OR]
ReescreverCond %{HTTP_USER_AGENT} ^NetZIP [OR]
ReescreverCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa Foto [OR]
ReescreverCond %{HTTP_USER_AGENT} ^pavuk [OR]
ReescreverCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
ReescreverCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
ReescreverCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleporte Pro [OR]
ReescreverCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web Image Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web Sucker [OR]
ReescreverCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo IS [OR]
ReescreverCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
ReescreverCond %{HTTP_USER_AGENT} ^WebReaper [OR]
ReescreverCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Site Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
ReescreverCond %{HTTP_USER_AGENT} ^WebZIP [OR]
ReescreverCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Viúva [OR]
ReescreverCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [OR]
ReescreverCond %{HTTP_USER_AGENT} ^Zeus
ReescreverRegra ^.* - [F,L]
[F] - 403 Proibido
[EU] - ?
8 Altere sua página de diretório padrão Altere sua página de diretório padrão
DirectoryIndex index.html index.php index.cgi index.pl
9 Redirecionamentos <br />Arquivo único
Redirecionar /old_dir/old_file.html http://yoursite.com/new_dir/new_file.html
diretório inteiro
Redirecionar /old_dir http://seusite.com/new_dir
Efeito: O mesmo que mover o diretório
http://seusite.com/old_dir -> http://seusite.com/new_dir
http://seusite.com/old_dir/dir1/test.html -> http://seusite.com/new_dir/dir1/test.html
Dica: Solução para o problema de que o Redirect não consegue redirecionar ao usar o diretório de usuários
Ao usar o diretório de usuário padrão do Apache, como http://mysite.com/~windix, e quando desejar redirecionar para http://mysite.com/~windix/jump, você descobrirá que o redirecionamento a seguir não trabalhar:
Redirecionar/pular http://www.google.com
A maneira correta é alterá-lo para
Redirecionar /~windix/jump http://www.google.com
(fonte: .htaccess Redirecionamento em “Sites” sem redirecionamento: por quê?)
10 Impedir a visualização do arquivo .htaccess Impedir a visualização do arquivo .htaccess
ordenar permitir, negar
negar de todos
11 Adicionando tipos MIME Adicionando tipos MIME
Aplicativo AddType/x-shockwave-flash swf
Dicas: Definir o tipo como application/octet-stream solicitará que você baixe
12 Prevenindo hot linking de imagens e outros tipos de arquivo Anti-hot linking <br />Requer módulo mod_rewrite
RewriteEngine ativado
ReescreverCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www/.)?meudominio.com/.*$ [NC]
ReescreverRule .(gif|jpg|js|css)$ - [F]
Análise:
Se HTTP_REFERER não estiver vazio (a fonte são outros sites, não conectados diretamente) e se HTTP_REFERER não começa com (www.)meudominio.com (ignore maiúsculas e minúsculas [NC]) (a fonte não é este site)
Dá erro 403 Proibido [F] para todos os arquivos que terminam com .gif/.jpg/.js/.css
Você também pode especificar uma resposta, pois o exemplo a seguir mostra uma imagem de substituição
ReescreverRegra .(gif|jpg)$ [R,L]
[R] - Redirecionar
[L] - Ligação
13 Impedindo a listagem de diretórios Impedindo a exibição da listagem de diretórios
ÍndiceIgnorar*
ÍndiceIgnorar *.jpg *.gif
Pontas:
Permitir exibição da listagem de diretórios: Opções + Índices
Desativar exibição da lista de sacerdotes: Opções -Índices
Exibir informações de prompt: arquivo de cabeçalho HEADER, arquivo de rodapé README