| <?xml version='1.0' encoding='UTF-8' ?> |
| <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.pt-br.xsl"?> |
| <!-- English Revision: 151408:1741841 (outdated) --> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <manualpage metafile="htaccess.xml.meta"> |
| <parentdocument href="./">How-To / Tutoriais</parentdocument> |
| |
| <title>Tutorial do Apache: arquivos .htaccess</title> |
| |
| <summary> |
| <p>Arquivos <code>.htaccess</code> oferecem um meio de fazer mudanças |
| nas configurações por-diretório.</p> |
| </summary> |
| |
| <section id="related"><title>Arquivos .htaccess </title> |
| <related> |
| <modulelist> |
| <module>core</module> |
| <module>mod_authn_file</module> |
| <module>mod_authz_groupfile</module> |
| <module>mod_cgi</module> |
| <module>mod_include</module> |
| <module>mod_mime</module> |
| </modulelist> |
| |
| <directivelist> |
| <directive module="core">AccessFileName</directive> |
| <directive module="core">AllowOverride</directive> |
| <directive module="core">Options</directive> |
| <directive module="mod_mime">AddHandler</directive> |
| <directive module="core">SetHandler</directive> |
| <directive module="mod_authn_core">AuthType</directive> |
| <directive module="mod_authn_core">AuthName</directive> |
| <directive module="mod_authn_file">AuthUserFile</directive> |
| <directive module="mod_authz_groupfile">AuthGroupFile</directive> |
| <directive module="mod_authz_core">Require</directive> |
| </directivelist> |
| |
| </related> |
| </section> |
| |
| <section id="what"> |
| <title>O que eles são/Como usá-los</title> |
| |
| <p>Os arquivos <code>.htaccess</code> (ou "arquivos de |
| configuração distribuída") oferecem um meio de fazer mudanças nas |
| configurações por-diretório. Um arquivo, contendo uma ou mais |
| diretrizes de configurações, é colocado em um diretório |
| em particular, e as diretrizes se aplicam para aquele diretório e todos |
| os seu subdiretórios subseqüentes.</p> |
| |
| <note><title>Nota:</title> |
| <p>Se você quiser renomear o seu arquivo <code>.htaccess</code> |
| para outro nome, você deve usar a diretriz <directive |
| module="core">AccessFileName</directive>. Por exemplo, se você |
| prefere que o arquivo se chame <code>.config</code>, então você |
| pode adicionar a seguinte linha ao seu arquivo de configuração |
| do servidor:</p> |
| |
| <example> |
| AccessFileName .config |
| </example> |
| </note> |
| |
| <p>No geral, arquivos <code>.htaccess</code> usam a mesma sintaxe |
| que os <a href="../configuring.html#syntax">arquivos de |
| configuração principal</a>. O que você pode colocar nesses |
| arquivos é determinado pele diretriz <directive |
| module="core">AllowOverride</directive>. Essa diretriz especifica, |
| em categorias, quais diretrizes serão aceitas caso sejam |
| encontradas em um arquivo <code>.htaccess</code>. Se uma diretriz |
| for permitida em um arquivo <code>.htaccess</code>, a documentação |
| para essa diretriz irá conter uma seção <em>Override</em>, |
| especificando que valor precisa estar em <directive |
| module="core">AllowOverride</directive> para que esta diretriz |
| seja permitida.</p> |
| |
| <p>Por exemplo, se você procurar na documentação pela diretriz |
| <directive module="core">AddDefaultCharset</directive>, você |
| achará que ela é permitida nos arquivos <code>.htaccess</code>. |
| (Veja a linha Contexto no sumário das diretivas.) A |
| linha <a href="../mod/directive-dict.html#Context">Override</a> lê |
| <code>FileInfo</code>. Então, você deve ao menos ter |
| <code>AllowOverride FileInfo</code> para que essa diretriz seja |
| aceita nos arquivos <code>.htaccess</code>.</p> |
| |
| <example><title>Exemplo:</title> |
| <table> |
| <tr> |
| <td><a |
| href="../mod/directive-dict.html#Context">Contexto:</a></td> |
| <td>configuração do servidor, hospedeiros virtuais, diretório, .htaccess</td> |
| </tr> |
| |
| <tr> |
| <td><a |
| href="../mod/directive-dict.html#Override">Override:</a></td> |
| <td>FileInfo</td> |
| </tr> |
| </table> |
| </example> |
| |
| <p>Se você estiver incerto se uma diretriz em particular é |
| aceita em um arquivo <code>.htaccess</code>, procure na |
| documentação por essa diretriz, e verifique a linha de |
| Contexto por ".htaccess".</p> </section> |
| |
| <section id="when"><title>Quando (não) usar arquivos .htaccess</title> |
| |
| <p>No geral, você nunca deve usar arquivos <code>.htaccess</code> |
| a não ser que você não tenha acesso ao arquivo de configuração |
| principal do servidor. Existe, por exemplo, um erro de concepção |
| que dita que a autenticação de usuários sempre deve |
| ser feita usando os arquivos <code>.htaccess</code>. Esse |
| simplesmente não é o caso. Você pode usar as configurações de |
| autenticação de usuário no arquivo de configuração principal do |
| servidor, e isso é, de fato, a maneira mais adequada de se fazer |
| as coisas.</p> |
| |
| <p>Arquivos <code>.htaccess</code> devem ser usados em casos onde |
| os provedores de conteúdo do site precisem fazer mudanças na |
| configuração do servidor por-diretório, mas não tem |
| acesso <em>root</em> ao sistema do servidor. Caso o administrador do |
| servidor não esteja disposto a fazer mudanças freqüentes nas |
| configurações do servidor, é desejável permitir que os |
| usuários possam fazer essas mudanças através de arquivos |
| <code>.htaccess</code> eles mesmos. Isso é particularmente |
| verdade, por exemplo, em casos onde provedores estão fornecendo |
| múltiplos sites para usuários em apenas uma máquina, e querem que |
| seus usuários possam alterar suas configurações.</p> |
| |
| <p>No entanto, de modo geral, o uso de arquivos <code>.htaccess</code> |
| deve ser evitado quando possível. Quaisquer configurações |
| que você considerar acrescentar em um arquivo <code>.htaccess</code>, podem |
| ser efetivamente colocadas em uma seção <directive module="core" |
| type="section">Directory</directive> no arquivo principal de |
| configuração de seu servidor.</p> |
| |
| <p>Existem duas razões principais para evitar o uso de arquivos |
| <code>.htaccess</code>.</p> |
| |
| <p>A primeira delas é a performance. Quando <directive |
| module="core">AllowOverride</directive> é configurado para |
| permitir o uso de arquivos <code>.htaccess</code>, o Apache procura |
| em todos diretórios por arquivos <code>.htaccess</code>. |
| Logo, permitir arquivos <code>.htaccess</code> causa um impacto na |
| performance, mesmo sem você usá-los de fato! Além disso, |
| o arquivo <code>.htaccess</code> é carregado toda vez que um documento |
| é requerido.</p> |
| |
| <p>Além disso, note que o Apache precisa procurar pelos arquivos |
| <code>.htaccess</code> em todos os diretórios superiores, para ter |
| o complemento total de todas as diretivas que devem ser |
| aplicadas. (Veja a seção <a href="#how">como as diretrizes são |
| aplicadas</a>.) Então, se um arquivo de um diretório |
| <code>/www/htdocs/example</code> é requerido, o Apache precisa |
| procurar pelos seguintes arquivos:</p> |
| |
| <example> |
| /.htaccess<br /> |
| /www/.htaccess<br /> |
| /www/htdocs/.htaccess<br /> |
| /www/htdocs/example/.htaccess |
| </example> |
| |
| <p>Assim, para cada acesso de arquivo fora desse diretório, |
| existem 4 acessos ao sistema de arquivos adicionais, mesmo |
| que nenhum desses arquivos estejam presentes. (Note que esse |
| só será o caso se os arquivos <code>.htaccess</code> |
| estiverem habilitados para <code>/</code>, o que |
| normalmente não é o verdade.)</p> |
| |
| <p>A segunda consideração é relativa à segurança. |
| Você está permitindo que os usuários modifiquem as |
| configurações do servidor, o que pode resultar em mudanças |
| que podem fugir ao seu controle. Considere com cuidado se você quer |
| ou não dar aos seus usuários esses privilégios. Note também |
| que dar aos usuários menos privilégios que eles precisam, acarreta em |
| pedidos de suporte técnico adicionais. Tenha certeza que você comunicou |
| aos usuários que nível de privilégios você os deu. |
| Especificar exatamente o que você configurou na diretriz <directive |
| module="core">AllowOverride</directive>, e direcioná-los para a |
| documentação relevante, irá poupá-lo de muita confusão |
| depois.</p> |
| |
| <p>Perceba que é exatamente equivalente colocar o arquivo |
| <code>.htaccess</code> em um diretório |
| <code>/www/htdocs/example</code> contendo uma diretriz, e |
| adicionar a mesma diretriz em uma seção <em>Directory</em> |
| <code><Directory /www/htdocs/example></code> na configuração |
| principal do seu servidor:</p> |
| |
| <p>Arquivo <code>.htaccess</code> em <code>/www/htdocs/example</code>:</p> |
| |
| <example><title>Conteúdo de um arquivo .htaccess em |
| <code>/www/htdocs/example</code></title> |
| AddType text/example .exm |
| </example> |
| |
| <example><title>Seção do seu arquivo <code>httpd.conf</code></title> |
| <Directory /www/htdocs/example><br /> |
| <indent> |
| AddType text/example .exm<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>No entanto, adicionando isso ao seu arquivo de configuração do |
| servidor resultará em uma menor perda de performance, na medida que |
| a configuração é carregada no momento da inicialização do |
| servidor, ao invés de toda que que um arquivo é requerido.</p> |
| |
| <p>O uso de arquivos <code>.htaccess</code> pode ser totalmente |
| desabilitado, ajustando a diretriz <directive |
| module="core">AllowOverride</directive> para <code>none</code>:</p> |
| |
| <example> |
| AllowOverride None |
| </example> |
| </section> |
| |
| <section id="how"><title>Como as diretrizes são aplicadas</title> |
| |
| <p>As diretrizes de configuração que se encontram em um arquivo |
| <code>.htaccess</code> são aplicadas para o diretório no qual o |
| arquivo <code>.htaccess</code> se encontra, e para todos os |
| subdiretórios ali presentes. Mas, é importante lembrar também que |
| podem existir arquivos <code>.htaccess</code> no diretórios |
| superiores. As diretrizes são aplicadas na ordem que são |
| achadas. Logo, um arquivo <code>.htaccess</code> em um diretório |
| em particular, pode sobrescrever as diretrizes encontradas em um |
| diretório acima deste em sua respectiva árvore. Estes, por sua vez, |
| podem ter suas diretrizes sobrescritas por diretrizes ainda mais |
| acima, ou no próprio arquivo de configuração principal do |
| servidor.</p> |
| |
| <p>Exemplo:</p> |
| |
| <p>No diretório <code>/www/htdocs/example1</code> nós temos |
| um arquivo <code>.htaccess</code> contendo o seguinte:</p> |
| |
| <example> |
| Options +ExecCGI |
| </example> |
| |
| <p>(Nota: você deve ter "<code>AllowOverride Options</code>" para |
| permitir o uso da diretriz "<directive |
| module="core">Options</directive>" nos arquivos |
| <code>.htaccess</code> .)</p> |
| |
| <p>No diretório <code>/www/htdocs/example1/example2</code> nós temos |
| um arquivo <code>.htaccess</code> contendo:</p> |
| |
| <example> |
| Options Includes |
| </example> |
| |
| <p>Devido a esse segundo arquivo <code>.htaccess</code>, no |
| diretório <code>/www/htdocs/example1/example2</code>, a execução |
| de scripts CGI não é permitida, pois somente <code>Options |
| Includes</code> está em efeito, o que sobrescreve completamente |
| quaisquer outros ajustes previamente configurados.</p> |
| </section> |
| |
| <section id="auth"><title>Exemplo de Autenticação</title> |
| |
| <p>Se você veio diretamente à esta parte do documento para |
| aprender como fazer autenticação, é importante notar uma |
| coisa. Existe uma concepção errada, mas muito comum, de que é |
| necessário o uso de arquivos <code>.htaccess</code> para implementar |
| a autenticação por senha. Este não é o caso. Colocar |
| diretrizes de senha em uma seção <directive module="core" |
| type="section">Directory</directive>, no seu arquivo principal de |
| configuração do servidor, é a melhor maneira de se implementar |
| isto, e os arquivos <code>.htaccess</code> devem ser usados apenas |
| se você não tem acesso ao arquivo principal de configuração do |
| servidor. Veja <a href="#when">acima</a> a discussão sobre quando |
| você deve e quando não deve usar os arquivos |
| <code>.htaccess</code>.</p> |
| |
| <p>Dito isso, se você ainda acredita que precisa usar um arquivo |
| <code>.htaccess</code>, a configuração a seguir provavelmente |
| funcionará para você.</p> |
| |
| <p>Conteúdo de um arquivo <code>.htaccess</code>:</p> |
| |
| <example> |
| AuthType Basic<br /> |
| AuthName "Password Required"<br /> |
| AuthUserFile /www/passwords/password.file<br /> |
| AuthGroupFile /www/passwords/group.file<br /> |
| Require Group admins |
| </example> |
| |
| <p>Note que <code>AllowOverride AuthConfig</code> precisa estar |
| habilitado para que estas diretrizes tenham efeito.</p> |
| |
| <p>Por favor veja o <a href="auth.html">tutorial de |
| autenticação</a> para uma discussão mais completa sobre |
| autenticação e autorização.</p> |
| </section> |
| |
| <section id="ssi"><title>Exemplo de Server Side Includes</title> |
| |
| <p>Outro uso comum de arquivos <code>.htaccess</code> é ativar o |
| Server Side Includes para um diretório em particular. Isto pode |
| ser feito com as seguintes diretrizes de configuração, colocadas em |
| um arquivo <code>.htaccess</code> no diretório desejado:</p> |
| |
| <example> |
| Options +Includes<br /> |
| AddType text/html shtml<br /> |
| AddHandler server-parsed shtml |
| </example> |
| |
| <p>Note que ambos <code>AllowOverride Options</code> e |
| <code>AllowOverride FileInfo</code> precisam estar habilitados |
| para essas diretrizes terem efeito.</p> |
| |
| <p>Por favor veja o <a href="ssi.html">tutorial de SSI</a> para |
| uma discussão mais completa sobre server-side includes.</p> |
| </section> |
| |
| <section id="cgi"><title>Exemplo de CGI</title> |
| |
| <p>Finalmente, você pode querer que um arquivo |
| <code>.htaccess</code> permita a execução de programas CGI em um |
| diretório em particular. Isto pode ser implementado com as |
| seguintes configurações:</p> |
| |
| <example> |
| Options +ExecCGI<br /> |
| AddHandler cgi-script cgi pl |
| </example> |
| |
| <p>Alternativamente, se você desejar que todos os arquivos de um |
| dado diretório, sejam considerados programas CGI, isso pode ser |
| feito com a seguinte configuração:</p> |
| |
| <example> |
| Options +ExecCGI<br /> |
| SetHandler cgi-script |
| </example> |
| |
| <p>Note que ambos <code>AllowOverride Options</code> e |
| <code>AllowOverride FileInfo</code> precisam estar habilitados |
| para que essas diretrizes tenham quaisquer efeito.</p> |
| |
| <p>Por favor veja o <a href="cgi.html">tutorial de CGI |
| tutorial</a> para uma discussão mais completa sobre programação |
| e configuração CGI.</p> |
| </section> |
| |
| <section id="troubleshoot"><title>Resolvendo Problemas</title> |
| |
| <p>Quando você adiciona diretrizes de configuração em um arquivo |
| <code>.htaccess</code>, e não obtém o efeito desejado, existe uma |
| série de pontos que podem estar errados.</p> |
| |
| <p>Mais comumente, o problema é que a diretriz <directive |
| module="core">AllowOverride</directive> não está habilitada |
| corretamente para que as suas diretrizes de configurações sejam |
| honradas. Verifique se você não possui <code>AllowOverride |
| None</code> ajustado para o escopo do arquivo em questão. Um bom |
| meio de testar isso é colocar "lixo" em seu arquivo |
| <code>.htaccess</code> e recarregá-lo. Se não for gerado nenhum |
| erro do servidor, certamente você tem <code>AllowOverride |
| None</code> habilitado.</p> |
| |
| <p>Se, por outro lado, você está obtendo erros do servidor ao |
| tentar acessar documentos, verifique o registro de erros do |
| Apache. Ele provavelmente irá indicar que a diretriz usada em |
| seu arquivo <code>.htaccess</code> não é permitida. |
| Alternativamente, ele pode acusar erros de sintaxe que você terá |
| que corrigir.</p> |
| |
| </section> |
| |
| </manualpage> |