<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br"><head><!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Tutorial do Apache: arquivos .htaccess - Servidor HTTP Apache</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/directives.html">Diretrizes</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossário</a> | <a href="../sitemap.html">Mapa do site</a></p>
<p class="apache">Servidor HTTP Apache Versão 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentação</a> &gt; <a href="../">Versão 2.2</a> &gt; <a href="./">How-To / Tutoriais</a></div><div id="page-content"><div id="preamble"><h1>Tutorial do Apache: arquivos .htaccess</h1>
<div class="toplang">
<p><span>Línguas Disponíveis: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../pt-br/howto/htaccess.html" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a></p>
</div>

<p>Arquivos <code>.htaccess</code> oferecem um meio de fazer mudanças
 nas configurações por-diretório.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Arquivos .htaccess </a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#what">O que eles são/Como usá-los</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#when">Quando (não) usar arquivos .htaccess</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#how">Como as diretrizes são aplicadas</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#auth">Exemplo de Autenticação</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssi">Exemplo de Server Side Includes</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Exemplo de CGI</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Resolvendo Problemas</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="related" id="related">Arquivos .htaccess </a></h2>
    <table class="related"><tr><th>Módulos Relacionados</th><th>Diretrizes Relacionadas</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li><li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li><li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li></ul></td></tr></table>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="what" id="what">O que eles são/Como usá-los</a></h2>


    <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>

    <div class="note"><h3>Nota:</h3>
      <p>Se você quiser renomear o seu arquivo <code>.htaccess</code>
      para outro nome, você deve usar a diretriz <code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code>. 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>

      <div class="example"><p><code>
        AccessFileName .config
      </code></p></div>
    </div>

    <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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. 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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> para que esta diretriz
    seja permitida.</p>

    <p>Por exemplo, se você procurar na documentação pela diretriz
    <code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code>, 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>

    <div class="example"><h3>Exemplo:</h3><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></div>

    <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> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="when" id="when">Quando (não) usar arquivos .htaccess</a></h2>

    <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 <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> 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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> é 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>

    <div class="example"><p><code>
      /.htaccess<br />
      /www/.htaccess<br />
      /www/htdocs/.htaccess<br />
      /www/htdocs/example/.htaccess
    </code></p></div>

    <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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, 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>&lt;Directory /www/htdocs/example&gt;</code> na configuração
    principal do seu servidor:</p>

    <p>Arquivo <code>.htaccess</code> em <code>/www/htdocs/example</code>:</p>

    <div class="example"><h3>Conteúdo de um arquivo .htaccess em
    <code>/www/htdocs/example</code></h3><p><code>
        AddType text/example .exm
    </code></p></div>

    <div class="example"><h3>Seção do seu arquivo <code>httpd.conf</code></h3><p><code>
      &lt;Directory /www/htdocs/example&gt;<br />
      <span class="indent">
        AddType text/example .exm<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> para <code>none</code>:</p>

    <div class="example"><p><code>
      AllowOverride None
    </code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="how" id="how">Como as diretrizes são aplicadas</a></h2>

    <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>

    <div class="example"><p><code>
       Options +ExecCGI
    </code></p></div>

    <p>(Nota: você deve ter "<code>AllowOverride Options</code>" para
    permitir o uso da diretriz "<code class="directive"><a href="../mod/core.html#options">Options</a></code>" 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>

    <div class="example"><p><code>
       Options Includes
    </code></p></div>

    <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>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="auth" id="auth">Exemplo de Autenticação</a></h2>

    <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 <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, 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>

    <div class="example"><p><code>
      AuthType Basic<br />
      AuthName "Password Required"<br />
      AuthUserFile /www/passwords/password.file<br />
      AuthGroupFile /www/passwords/group.file<br />
      Require Group admins
    </code></p></div>

    <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>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ssi" id="ssi">Exemplo de Server Side Includes</a></h2>

    <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>

    <div class="example"><p><code>
       Options +Includes<br />
       AddType text/html shtml<br />
       AddHandler server-parsed shtml
    </code></p></div>

    <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>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cgi" id="cgi">Exemplo de CGI</a></h2>

    <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>

    <div class="example"><p><code>
       Options +ExecCGI<br />
       AddHandler cgi-script cgi pl
    </code></p></div>

    <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>

    <div class="example"><p><code>
       Options +ExecCGI<br />
       SetHandler cgi-script
    </code></p></div>

    <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>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="troubleshoot" id="troubleshoot">Resolvendo Problemas</a></h2>

    <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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> 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>

</div></div>
<div class="bottomlang">
<p><span>Línguas Disponíveis: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../pt-br/howto/htaccess.html" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2006 The Apache Software Foundation.<br />Licenciado sob a <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/directives.html">Diretrizes</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossário</a> | <a href="../sitemap.html">Mapa do site</a></p></div>
</body></html>