mirror of
				https://github.com/apache/httpd.git
				synced 2025-11-03 17:53:20 +03:00 
			
		
		
		
	git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1742728 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			398 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			398 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<?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:1741842 (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>
 |