Um guia para iniciantes em .htaccess para designers e desenvolvedores
Entre as várias ferramentas para personalizar seu servidor web, o arquivo de configuração .htaccess é um tremendo recurso. Você pode redefinir rapidamente os tipos de documento, mecanismos de análise, redirecionamentos de URL, e muitos outros recursos cruciais. Webmasters que não são muito técnicos podem não entrar nas especificidades de gerenciar seu próprio arquivo .htaccess. Mas o tópico em si é fascinante e merece alguma investigação.
Para este artigo, quero apresentar alguns dos conceitos mais propositais para webmasters e desenvolvedores da web. Qualquer um que é lançando seu próprio site em um servidor Apache definitivamente vai querer entender como gerenciar seu arquivo .htaccess. isto fornece muita capacidade de personalização e isso pode funcionar em qualquer idioma da web do PHP para o Ruby.
Na parte inferior desta postagem, adicionei algumas aplicações web externas ajudar recém-chegados a gerar seus arquivos .htaccess dinamicamente.
Por que usar um arquivo .htaccess??
Esta é uma ótima pergunta e talvez devêssemos começar respondendo “o que é um arquivo .htaccess”? É um arquivo de configuração muito especial usado pelo servidor web Apache. Um arquivo .htaccess pode informar ao servidor da web como apresentar várias formas de informação e como lidar com vários cabeçalhos de solicitação HTTP.
Realmente é um meio de descentralização para organizar as configurações do servidor da web. Um servidor físico pode conter 50 sites diferentes, cada um com seu próprio arquivo .htaccess. Ele concede muito poder aos webmasters, o que de outra forma seria impossível. Mas por que você deveria usar um?
O maior motivo é a segurança. Você pode bloquear determinados diretórios ou torná-los protegidos por senha. Isso é ótimo para projetos privados ou novos sistemas de gerenciamento de conteúdo nos quais você deseja um pouco de segurança extra. Mas também há tarefas comuns, como redirecionar mensagens de erro 404 para uma determinada página da web. Isso leva apenas uma única linha de código e pode impactar dramaticamente como os visitantes reagem às páginas ausentes.
Na verdade, não há muito que eu possa dizer para convencer os outros de que vale a pena entender um arquivo .htaccess. Depois de ver isso em ação, você pode reconhecer todo o valor que vem desse minúsculo arquivo de configuração. Também espero que o restante deste artigo possa apresentar alguns tópicos perspicazes para trazer os webmasters à luz do gerenciamento de uma configuração .htaccess.
Permitir / negar acesso
É possível reconhecer potenciais visitantes de spam e impedi-los de acessar seu site. Isso pode ser um pouco extremo, no entanto, se você souber que uma pessoa ou um grupo de pessoas tem segmentado seu site, há algumas opções para escolher. Você pode escolher uma referência de domínio para negar ou banir visitantes por um endereço IP.
order allow, deny deny de 255.0.0.0 nega de 123.45.6. permitir de todos
Esses códigos de amostra foram copiados do Guia Htaccess, pois são o modelo perfeito para começar. Observe que o segundo endereço IP está faltando no 4º inteiro. Este bloco de código terá como alvo o primeiro IP (255.0.0.0) e todos os IP dentro do intervalo de 123.45.6.0-255, então permita todo o outro tráfego. Os webmasters não podem usar isso com tanta frequência quanto outras técnicas, mas é útil entender.
Evitar listagem de diretório
Haverá momentos em que você tem um diretório aberto que é configurado para permitir a navegação por padrão. Isso significa que os usuários podem visualizar todos os arquivos listados em uma estrutura de diretório interna, como a pasta de imagens. Alguns webmasters não querem permitir a listagem de diretórios e, felizmente, o snippet de código é fácil de lembrar.
Opções -Indexes
Eu tenho visto esta resposta apresentada inúmeras vezes em todo o Stack Overflow e pode ser uma das regras de .htaccess mais fáceis de lembrar.
É possível realmente crie vários arquivos .htaccess dentro de cada um desses diretórios então talvez um deles seja protegido por senha, mas os outros não são. E você ainda pode manter o Opções -Indexes para que os visitantes não possam navegar pelo seu site / images / folder.
Proteção de senha
Proteger seus diretórios por senha é um procedimento muito comum para proteger áreas de administração e outras pastas cruciais para o seu site. Às vezes você só quer oferecer acesso a um pequeno grupo de pessoas. Outras vezes, as senhas são usadas para impedir que hackers tenham acesso ao painel de administração do seu site. Mas de qualquer forma, é uma solução muito poderosa para um grande número de problemas.
Há um guia prático sobre proteção por senha que descreve os trechos de código importantes. Você vai precisar gerar um arquivo de senha que armazena as credenciais de nome de usuário / senha. É assim que o Apache pode verificar o que o usuário insere para ver se deve receber acesso. E observe como você precisará gerar uma amostra para seu nome de usuário e senha.
Eu recomendaria usar este gerador de htpassword para que você possa economizar um pouco de tempo. A sintaxe sempre será perfeita e você não precisará criptografar a senha. E a outra ótima opção é proteger por senha uma lista inteira de diretórios. Podemos ver este exemplo na galeria de trechos de códigos CSS-Tricks.
AuthType Basic AuthName "Esta área é protegida por senha" AuthUserFile /full/path/to/.htpasswd Exigir usuário válido
Segurança para WordPress
Para colocar essa ideia de proteção por senha em bom uso, vamos mostrar um exemplo do mundo real. Este trecho de código mais complicado será forçar a autenticação do usuário para qualquer pessoa que acessar o arquivo wp-login.php do WordPress. Você encontrará a fonte original no Ask Apache, que possui vários outros trechos de proteção do WordPress..
Ordem Negar, Permitir Negar de Todos Satisfazer Qualquer AuthName "Protegido por AskApache" AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Requerer usuário válido
E se você seguir essas regras do .htaccess, também poderá ajudar a proteger com senha a área administrativa. Tipicamente o wp-login.php arquivo vai obter o maior número de acessos de pessoas que tentam forçar a força bruta no seu sistema. Então, mesmo os códigos de amostra acima seriam mais do que suficiente segurança adicional para o seu site WordPress.
Regras de reconfiguração de URLs HTTP
Reescrever URLs é provavelmente um dos usos mais comuns para arquivos .htaccess. Instalações padrão do WordPress podem realmente gerar um arquivo .htaccess direto do painel de administração. Isso permite que você crie URLs bonitas que não tenham a estrutura .php? P = 1.
Eu quero olhar para este exemplo de reescrita em como atualizar sublinhados para traços desde que contém muitos dos elementos mais importantes.
Opções + FollowSymLinks RewriteEngine Em RewriteBase / RewriteRule! \. (Html | php) $ - [S = 4] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _] *) _ ( [^ _] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4- $ 5 [E = uscor: Sim] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _ ] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4 [E = uscor: Sim] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ (. *) $ $ 1- $ 2- $ 3 [E = uscor: Sim] RewriteRule ^ ([^ _] *) _ (. *) $ $ 1- $ 2 [E = uscor: Sim] RewriteCond% ENV: uscor ^ Sim $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
RewriteEngine e RewriteBase pode sempre ser definido para esses valores exatos. Mas você precisa do RewriteEngine ligado para qualquer outra coisa funcionar. Há uma abundância de guias on-line explicando como ativar o mod_rewrite e seu provedor de hospedagem também pode ajudar.
Observe que a sintaxe segue um padrão de RewriteRules no topo. Essas regras são usadas para Corresponder aos casos que estão sendo enviados como uma solicitação HTTP. Estes são respondidos por um RewriteRule que neste caso redireciona tudo para o domínio d.com. Os colchetes finais como [R = 301, L] são chamados de sinalizadores de reescrita, que são importantes, mas mais de um tópico avançado.
A sintaxe mod_rewrite é definitivamente um pouco confusa, mas não se deixe intimidar! Os trechos podem parecer muito mais fáceis em outros exemplos.
Quando estou começando, eu tenho que recomendar este webapp mod_rewrite que ajuda você a gerar amostras de código usando URLs reais. Esta é uma ferramenta brilhante porque você pode procurar vários itens na sintaxe para ver o que eles realmente fazem nas regras de reconfiguração. Aqui está outro ótimo tutorial com um exemplo mais simples para estudar:
RewriteRule ^ dir / ([0-9] +) /? $ /Index.php?id=$1 [L]
Não tente se sobrecarregar com tudo isso de uma só vez. Demorei mais de 3-4 meses para realmente começar a entender como reescrever URLs com [0-9a-zA-Z] + e padrões semelhantes. Continue praticando e com o tempo eu prometo que você vai conseguir essas coisas como se fosse conhecimento de senso comum.
Snippets de código para webmasters
Adoro trechos fáceis de usar e quero reunir esta pequena coleção de códigos de htaccess pertinentes para webmasters. Cada uma dessas idéias pode se encaixar perfeitamente em seu próprio arquivo .htaccess junto com outros blocos de código. A maioria desses trechos são ótimos para Resolvendo Problemas Rápidos ou Correções no Ambiente do seu Servidor da Web. Imagine a configuração perfeita do Apache para novos webmasters que estão apenas começando on-line.
Definindo DirectoryIndex
O comando para DirectoryIndex é usado comumente em uma única linha. Você pode dizer ao Apache quais documentos devem ser inicialmente tratados como “a Principal” documento. Por padrão, isso itens de destino, como index.html, index.php, index.asp e outros arquivos de índice. Mas usando este snippet de código que eu copiei abaixo, você tem a capacidade de fazer com que este documento raiz seja o que você quiser.
DirectoryIndex index.html index.cgi index.php
A ordem dos documentos deve começar com os mais importantes e passar para os menos importantes. Então, se não tivermos um arquivo HTML ou CGI, o fallback irá para index.php. E você poderia até nomear esses arquivos home.php ou someotherfile.php e é tudo sintaxe válida.
Forçar o subdomínio WWW ou não WWW
O Google pode trabalhar com as duas versões do domínio do seu website se você não especificar www.domain.com ou apenas dominio.com. Na minha experiência, é uma boa prática escolha um deles e configure-o como a única escolha via .htaccess. O Google não indexará vários URLs com alguns apontando para o subdomínio WWW, enquanto outros não.
# Force WWW Subdomain RewriteEngine Em RewriteCond% HTTP_HOST ^ dominio.com [NC] RewriteRule ^ (. *) $ Http://www.domain.com/$1 [L, R = 301] # Não Subdomain RewriteEngine Em RewriteCond% HTTP_HOST! ^ Domain.com $ [NC] RewriteRule ^ (. *) $ Http://domain.com/$1 [L, R = 301]
Este trecho de código vem de um arquivo CSS-Tricks e fornece uma solução muito útil. Você deve atualizar o domínio para ser o que for necessário para o seu próprio site. Caso contrário, haverá problemas e você notará imediatamente! Mas eu apoio bastante forçando uma dessas duas opções e ela está no topo da minha lista de tarefas depois de lançar um novo website.
Forçar downloads de arquivos de mídia
Outro snippet bastante importante permite forçar certos tipos de mídia a baixar em vez de ser exibido no navegador. Imediatamente posso pensar em documentos PDF e arquivos de áudio MP3 que podem ser apresentados em um formato para download, mas como você verifique se eles estão disponíveis para download? Eu encontrei um artigo similar publicado no Htaccess Guide que descreve este snippet de código.
Aplicativo AddType / octet-stream .zip .mp3 .mp4
Sinta-se à vontade para incluir ainda mais tipos de arquivos no final desta linha. Todos os formatos de mídia que usam o tipo MIME de fluxo de octetos estarão disponíveis para download. Forçar isso através do .htaccess é uma rota muito direta para garantir que as pessoas não consigam ver esses arquivos no navegador..
Documentos de erro personalizados
Uma última parte final que quero adicionar é um modelo completo de documentos de erro personalizados. Geralmente, esses códigos numéricos são vistos apenas no lado do servidor. Mas há muitos desses documentos de erro com os quais você deve estar familiarizado. Alguns exemplos podem ser Erros 403/404 e a Redirecionamento 301.
Este modelo de código de erro começa às 100 e sobe para 500 erros. Por favor, note que você obviamente não precisa de todos eles. Apenas os erros mais comuns seriam necessários e, possivelmente, alguns trechos obscuros se você sentir a necessidade.
Se você não reconhecer um código, basta procurar na Wikipédia para entender melhor.
ErrorDocument 100 / 100_CONTINUE ErrorDocument 101 / 101_SWITCHING_PROTOCOLS ErrorDocument 102 / 102_PROCESSING ErrorDocument 200 / 200_OK ErrorDocument 201 / 201_CREATED ErrorDocument 202 / 202_ACCEPTED ErrorDocument 203 / 203_NON_AUTHORITATIVE ErrorDocument 204 / 204_NO_CONTENT ErrorDocument 205 / 205_RESET_CONTENT ErrorDocument 206 / 206_PARTIAL_CONTENT ErrorDocument 207 / 207_MULTI_STATUS ErrorDocument 300 / 300_MULTIPLE_CHOICES ErrorDocument 301 / 301_MOVED_PERMANENTLY ErrorDocument 302 / 302_MOVED_TEMPORARILY ErrorDocument 303 / 303_SEE_OTHER ErrorDocument 304 / 304_NOT_MODIFIED ErrorDocument 305 / 305_USE_PROXY ErrorDocument 307 / 307_TEMPORARY_REDIRECT ErrorDocument 400 / 400_BAD_REQUEST ErrorDocument 401 / 401_UNAUTHORIZED ErrorDocument 402 / 402_PAYMENT_REQUIRED ErrorDocument 403 / 403_FORBIDDEN ErrorDocument 404 / 404_NOT_FOUND ErrorDocument 405 / 405_METHOD_NOT_ALLOWED ErrorDocument 406 / 406_NOT_ACCEPTABLE ErrorDocument 407 / 407_PROXY_AUTHENTICATION_REQUIRED ErrorDocument 408 / 408_REQUEST_TIME_OUT ErrorDocument 409 / 409_CONFLICT ErrorDocument 410 / 410_GONE ErrorDocument 411 / 411_LENGTH_REQUIRED ErrorDocument 412 / 412_PRECONDITION_FAILED ErrorDocument 413 / 413_REQUEST_ENTITY_TOO_LARGE ErrorDocument 414 / 414_REQUEST_URI_TOO_LARGE ErrorDocument 415 / 415_UNSUPPORTED_MEDIA_TYPE ErrorDocument 416 / 416_RANGE_NOT_SATISFIABLE ErrorDocument 417 / 417_EXPECTATION_FAILED ErrorDocument 422 / 422_UNPROCESSABLE_ENTITY ErrorDocument 423 / 423_LOCKED ErrorDocument 424 / 424_FAILED_DEPENDENCY ErrorDocument 426 / 426_UPGRADE_REQUIRED ErrorDocument 500 / 500_INTERNAL_SERVER_ERROR ErrorDocument 501 / 501_NOT_IMPLEMENTED ErrorDocument 502 / 502_BAD_GATEWAY ErrorDocument 503 / 503_SERVICE_UNAVAILABLE ErrorDocument 504 / 504_GATEWAY_TIME_OUT ErrorDocument 505 / 505_VERSION_NOT_SUPPORTED ErrorDocument 506 / 506_VARIANT_ALSO_VARIES ErrorDocument 507 / 507_INSUFFICIENT_STORAGE ErrorDocument 510 / 510_NOT_EXTENDED
On-line .htaccess Webapps
- Construtor Htaccess
- .gerador de redirecionamento htaccess
- .htaccessEditor - Cria um arquivo .htaccess
- Mod Rewrite Generator por GenerateIt.net
Outros recursos úteis
- .htaccess no Httpd Wiki
- Documentação Oficial do Apache htaccess
- Ask Apache Blog - Arquivos Htaccess
- Guia final para o htaccess e o mod_rewrite
- Tudo o que você sempre quis saber sobre as regras do Mod_Rewrite, mas tinha medo de perguntar
Pensamentos finais
Existem inúmeros recursos online discutindo arquivos .htaccess. Meus artigos vinculados e webapps são um ótimo lugar para começar. Mas continue praticando novas idéias e não tenha medo de testando trechos de código. Enquanto você tem um arquivo de backup então você pode testar o que quiser e é uma experiência de aprendizado divertida.
Se você tiver outras idéias ou sugestões sobre o gerenciamento do .htaccess, por favor, compartilhe conosco na área de pós-discussão abaixo.