Guia de correção

Como Desabilitar a Listagem de Diretórios no WordPress (Apache e nginx)

1 de maio de 2026 Atualizado em 1 de mai. de 2026

Se você visitar uma URL de pasta em seu site, por exemplo https://seudominio.com/wp-content/uploads/2024/, uma de três coisas acontece. Você vê uma página WordPress branca limpa (porque index.php assume), você vê uma página "403 Forbidden", ou você vê algo que se parece com um navegador FTP: uma lista de cada arquivo naquela pasta, com tamanhos e timestamps. A terceira é o problema sobre o qual este guia trata.

A listagem de diretórios (também chamada "directory browsing" ou "directory indexing") é um recurso do servidor web que renderiza automaticamente um índice HTML quando nenhum index.html ou index.php é encontrado em uma pasta. Em um site estático, isso é ocasionalmente útil. Em um site WordPress é quase sempre um vazamento. Este guia explica o que especificamente vaza, por que importa e como desabilitar o recurso adequadamente no Apache, nginx e nos vários hosts gerenciados de WordPress.

O que realmente vaza quando a listagem de diretórios está habilitada?

A maioria das pastas do WordPress contém pelo menos um arquivo que é interessante para um invasor, um concorrente ou apenas um visitante curioso. Os piores casos realistas:

  • /wp-content/uploads/ contém todos os arquivos de mídia já enviados, organizados por ano e mês. Com a listagem habilitada, qualquer um pode ver PDFs que foram "deslinkados" mas nunca excluídos, rascunhos de imagens, documentos de clientes e quaisquer arquivos privados que um editor enviou pensando que "URL obscura" era proteção suficiente.
  • /wp-content/plugins/ revela a lista exata de plugins instalados no site, incluindo aqueles que foram desativados mas não excluídos. Essa é uma lista precisa de compras de vulnerabilidades para qualquer scanner.
  • /wp-content/backup/, /backups/, /wp-content/uploads/backups/ e pastas semelhantes são destinos típicos para plugins de backup. Se a listagem estiver ligada, dumps completos de banco de dados e backups zipados de site se tornam diretamente baixáveis.
  • Pastas de tema frequentemente contêm versões antigas de style.css, arquivos SCSS sobrando, páginas de teste ocultas e notas de desenvolvedor que nunca foram destinadas a ser públicas.
  • Pastas raiz do site podem mostrar wp-config.php.bak, arquivos de swap do editor (.swp), diretórios .git/ de uma implantação malfeita e restos de limpeza semelhantes.

Os arquivos sensíveis nessas pastas geralmente estão lá porque alguém os enviou rapidamente, pretendia excluí-los mais tarde e esqueceu. Enquanto a pasta não lista seu conteúdo, ninguém os encontra. No momento em que a listagem é habilitada, cada URL nessas pastas está a um clique de ser indexada por um buscador ou colhida por um scanner.

Como verificar se a listagem de diretórios está habilitada em seu site

O teste mais rápido leva dez segundos. Abra estas URLs em uma janela privada do navegador:

  • https://seudominio.com/wp-content/
  • https://seudominio.com/wp-content/uploads/
  • https://seudominio.com/wp-content/plugins/
  • https://seudominio.com/wp-includes/

O que você quer ver é uma página 403 Forbidden ou, no caso de /wp-content/, uma página branca em branco (esse é o index.php vazio do WordPress fazendo seu trabalho). O que você não quer ver é uma lista de arquivos. Se você vê uma, a listagem está ligada para essa pasta. O InspectWP também executa essa verificação durante cada varredura e sinaliza pastas afetadas na seção de segurança.

Opção 1: Desabilitar a listagem de diretórios no Apache (e LiteSpeed)

A diretiva do Apache que controla esse comportamento é chamada Options, com o valor Indexes ligando a listagem e Options Indexes sendo negado escrevendo-o sem um sinal de mais inicial, mais um sinal de menos na própria diretiva. Adicione o seguinte ao arquivo .htaccess no diretório raiz do seu WordPress, acima do marcador # BEGIN WordPress:

Options -Indexes

Essa única linha desabilita a listagem para toda a instalação do WordPress de uma vez. Aplica-se a cada pasta sob a raiz do documento, a menos que uma regra mais específica a sobrescreva mais profundamente na árvore.

Se seu host bloqueia Options em .htaccess inteiramente (alguns hosts compartilhados fazem isso por razões de desempenho), você tem dois fallbacks:

  1. Coloque um index.php ou index.html vazio em cada pasta que você quer bloquear. O WordPress já faz isso para /wp-content/, /wp-content/plugins/ e algumas outras, mas não para /wp-content/uploads/. O arquivo vazio faz com que o Apache sirva esse arquivo em vez de listar a pasta.
  2. Peça ao seu host para habilitar a diretiva Options para sua conta. A maioria dos hosts gerenciados fará isso mediante solicitação.

O truque do index.php é simples mas fácil de errar: você tem que lembrar de adicionar o arquivo a cada pasta recém-criada, incluindo as pastas de ano/mês que o WordPress cria automaticamente para novos uploads. Uma regra do servidor web não tem esse problema.

Opção 2: Desabilitar a listagem de diretórios no nginx

No nginx, a listagem de diretórios é controlada pela diretiva autoindex. Por padrão é off na maioria das instalações, então em uma configuração nginx padrão o problema não existe. As pastas que você visita caem em um 403 quando nenhum arquivo de índice está presente.

Se a listagem está ligada, alguém explicitamente a ligou em algum momento. Procure por autoindex on; em seu nginx.conf, no bloco server do site, ou em quaisquer arquivos conf.d incluídos. Ou remova a linha ou mude para:

autoindex off;

Recarregue o nginx com sudo nginx -t && sudo systemctl reload nginx. A próxima requisição de pasta receberá um 403 em vez de uma lista de arquivos.

Se você não pode recarregar o nginx (hospedagem gerenciada restrita), o mesmo truque do index.php da seção do Apache funciona no nginx também, porque o nginx servirá alegremente um arquivo de índice existente antes de cair de volta para autoindex.

Opção 3: Hospedagem WordPress gerenciada

Hosts gerenciados (Raidboxes, Kinsta, WP Engine, Cloudways, Pressable, etc.) tipicamente desabilitam a listagem de diretórios por padrão no nível do servidor. Se você descobrir que um desses hosts de alguma forma tem a listagem habilitada em sua conta, o movimento certo é um ticket de suporte rápido. Eles têm acesso à configuração nginx central e podem corrigir em minutos. Tentar contornar isso de dentro do WordPress em um host gerenciado raramente vale o esforço.

Note que alguns hosts usam uma camada CDN (Cloudflare, KeyCDN, Bunny) que armazena em cache requisições de pasta. Se você alterar a configuração do servidor e ainda vir uma lista de arquivos, o CDN pode estar servindo uma versão em cache. Purgue o cache para os caminhos afetados e teste novamente.

Erro comum: proteger wp-content/uploads com .htaccess

Um padrão que aparece em guias mais antigos é colocar um .htaccess separado diretamente em wp-content/uploads/ com uma longa lista de regras. A intenção é correta, mas os efeitos colaterais são confusos: dependendo do que as regras contêm, uploads de imagem podem parar de carregar, lazy loading pode quebrar ou PDFs podem se tornar inacessíveis. Se você só quer desabilitar a listagem, a única linha Options -Indexes no .htaccess raiz é suficiente. Aplica-se recursivamente. Não há necessidade de arquivos separados por pasta a menos que tenha uma razão específica.

E quanto a ocultar arquivos de mecanismos de busca também?

Desabilitar a listagem de diretórios impede que o índice da pasta seja servido, mas não impede um mecanismo de busca de indexar arquivos individuais dentro da pasta se eles estiverem linkados de algum lugar na web pública. Se você tem arquivos sensíveis em wp-content/uploads/ que não quer aparecendo no Google, remover o arquivo é a única resposta confiável. Meta tags noindex, cabeçalhos X-Robots-Tag e entradas em robots.txt ajudam com a descoberta, mas apenas a exclusão do arquivo garante que o conteúdo se foi.

A regra geral é a que sempre se aplica à pasta uploads: não envie nada para lá que você não estaria confortável vendo na primeira página do seu site. A pasta é um diretório web público por design.

Como verificar sua configuração

  1. Abra https://seudominio.com/wp-content/uploads/ em uma janela privada do navegador. Resultado esperado: uma página 403 Forbidden ou uma página em branco (dependendo se um index.html vazio está presente).
  2. Repita para qualquer outra pasta que você encontrou anteriormente (/wp-content/plugins/, pastas de tema, pastas de upload personalizadas).
  3. Se você vir uma lista de arquivos, a alteração não teve efeito. Verifique se você editou o .htaccess certo (o da raiz do WordPress, não o do diretório pai da instalação do WordPress) e limpe quaisquer camadas de cache.
  4. Execute uma nova varredura do InspectWP. A verificação "listagem de diretórios habilitada" na seção de segurança deve estar verde.

Toda a alteração é uma única linha no .htaccess no Apache, ou uma configuração no nginx. Cinco segundos de trabalho, e uma classe inteira de divulgação acidental de arquivos desaparece. Vale a pena fazer em cada site, mesmo que tudo na sua pasta de uploads esteja atualmente bem. A proteção é para o próximo arquivo que alguém envie com pressa, não apenas para os que já estão lá.

Verifique seu site WordPress agora

O InspectWP analisa seu site WordPress em busca de problemas de segurança, problemas de SEO, conformidade com GDPR e desempenho — gratuitamente.

Analise seu site grátis