Como desabilito a navegação no diretório?


Respostas:


420

Crie um arquivo .htaccess contendo a seguinte linha:

Options -Indexes

Essa é uma opção. Outra opção é editar o arquivo de configuração do apache.

Para fazer isso, primeiro você precisa abri-lo com o comando:

vim /etc/httpd/conf/httpd.conf

Em seguida, localize a linha: Opções Índices FollowSymLinks

Altere essa linha para: Opções FollowSymLinks

Por fim, salve e saia do arquivo e reinicie o servidor apache com este comando:

sudo service httpd restart

(Você tem um guia com capturas de tela aqui .)


14
Isso funciona mesmo em um <Diretório> ou <Local> em um arquivo .conf real
— chrismarx

1
@chrismarx em qual arquivo .conf eu o colocaria? O .htaccess parece não estar ativado no meu servidor e li que é melhor não usá-lo de qualquer maneira. Eu tenho acesso a todos os arquivos do servidor, porém, como é um vps.
— Charles John Thompson III

1
Estou preso à mesma pergunta, adicionei o arquivo .htaccess com o código ao mesmo diretório da minha página da Web, mas ele ainda está me dando um alerta de navegação no diretório. Estou fazendo algo errado?
— Randy Gilman

10
Observe que .htaccesspode estar desativado. Por favor, verifique a AllowOverridediretiva. Se estiver definido como None, então .htaccessestá desativado. Você pode ativá-lo definindo AllowOverride All. Para ser mais preciso, Allsignifica todas as diretivas Apache.
— Julian

2
Se você tem o controle do http.conf, é melhor fazê-lo lá. Há um acerto de desempenho com htaccess
— Itay Moav -Malimovka

298

A melhor maneira de fazer isso é desativá-lo com o servidor web apache2. No meu Ubuntu 14.X - /etc/apache2/apache2.confmudança aberta de

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

para

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

em seguida, reinicie o apache:

sudo service apache2 reload

Isso desativará a listagem de diretórios de todas as pastas que o apache2 serve.


11
'sudo service apache2 reload ' será suficiente!
— doctorlai

2
@ Jay Eu também tentei "Opções-índices", mas o Apache não inicia o posfácio. Estou executando a versão do servidor: Apache / 2.4.18 (Ubuntu). No entanto, o uso de "Options FollowSymLinks" funcionou conforme a resposta de Dung. Só estou curioso para saber qual versão do Apache e do SO você está executando? Talvez seja uma coisa de versão?
— MikeyE

@Jay @MikeyE O mesmo aqui; O Apache não recarregaria usando #-Indexes
— Crimbo 17/01

1
@Jay @MikeyE O Apache parece recarregar / reiniciar se você remover o #FollowSymLinks
— Crimbo

2
A execução apachectl configtestapós a adição Options -Indexes FollowSymLinksao httpd.conf gera o seguinte erro: "Todas as opções devem começar com + ou - ou nenhuma opção pode". Portanto, o que vai funcionar éOptions -Indexes +FollowSymLinks
— John T.

45

Além dos dois métodos mencionados acima (edite /etc/apache2/apache2.conf ou adicione Options -Indexes no arquivo .htaccess), aqui está outro

a2dismod autoindex

Reinicie o servidor apache2 posteriormente

sudo service apache2 restart

4
Você pode usar a2dismod -f autoindexpara execução de comandos sem bloqueio .
— Константин Ван

Boa opção nuclear! Isso funciona para Aliaspastas e qualquer outro caminho servido pelo Apache.
— precisa saber é o seguinte

Devo estar ciente de quaisquer efeitos colaterais?
— Naresh Kumar 19/02

28

Edite / crie um .htaccessarquivo dentro /galeriascom isso:

Options -Indexes

A navegação no diretório é fornecida pelo módulo mod_autoindex .


-Indexes no diretório raiz não funciona, em apache2.4.33, eu tive que usar a resposta de @Sarvar Nishonboyev
— Felipe Valdes

1
@FelipeValdes Por favor, leia atentamente a pergunta e a minha resposta. Não estamos falando de diretório raiz, mas de um subdiretório e foi solicitado que ele seja factível em um.htaccess arquivo (que não é o caminho mais eficiente, mas geralmente é a única opção em contas de hospedagem compartilhada ou com administradores de sistema ocupados).
— Álvaro González

23

Você pode colocar um arquivo vazio chamado index.htmlem cada diretório que não deseja que seja listado. Isso tem várias vantagens:

  • (Geralmente) requer configuração zero no servidor.
  • Ele continuará funcionando, mesmo que o administrador do servidor decida usar "AllowOverride None" na configuração do servidor. (Se você usar .htaccessarquivos, isso poderá gerar muitas mensagens "Erro 500 - erro interno do servidor" para seus usuários!).
  • Ele também permite que você mova seus arquivos de um servidor para o outro, novamente sem precisar mexer na configuração do apache.

Teoricamente, a indexação automática pode ser acionada por um arquivo diferente (isso é controlado pela DirectoryIndexopção), mas ainda não o encontrei no mundo real.


Atenção! Isso só pode funcionar com a Diretiva DirectoryIndexindex.html definida principalmente .
— Nyedidikeke

18

Uma das coisas importantes na configuração de um servidor web apache seguro é desativar a navegação no diretório. Por padrão, o apache vem com esse recurso ativado, mas é sempre uma boa idéia desativá-lo, a menos que você realmente precise. Abra o arquivo httpd.conf na pasta apache e localize a linha que se parece com:

Options Includes Indexes FollowSymLinks MultiViews

remova os índices da palavra e salve o arquivo. Reinicie o apache. É isso aí


1
Perfeito. Desative-o em toda a máquina. Por que isso seria ativado por padrão, eu não tenho idéia ...
— eduncan911

1
Isso funcionou para mim no Ubuntu (apache2.conf), mas .htaccess Options -Indexes não.
— precisa

Isso funcionou para mim no Ubuntu (/etc/apache2/apache2.conf), mas .htaccess Options -Indexes não.
— precisa saber é o seguinte

5

Se você optar por modificar o arquivo httpd.conf para resolver isso e tiver várias diretivas de Opções, deverá adicionar um - ou um + antes de cada diretiva. Exemplo:

Opções -Indexes + FollowSymLinks


3

Esta não é uma resposta, apenas minha experiência:

No meu Ubuntu 12.04 apache2, não encontrei Indexesno apache2.conf ou no httpd.conf, felizmente o encontrei sites-available/default. Depois de removê-lo, agora ele não vê a lista de diretórios. Pode ter que fazer isso por sites-available/default-ssl.


2

Abra o arquivo .htaccess e digite o seguinte código em

Options -Indexes

Certifique-se de pressionar a tecla ENTER (ou RETURN, se você usa um Mac) depois de inserir as palavras "Opções -Indexes" para que o arquivo termine com uma linha em branco.


2

Adicione isso no seu arquivo .htaccess:

Options -Indexes

Se não funcionar por qualquer motivo, tente isso no seu arquivo .htaccess:

IndexIgnore *

1

Para completar a resposta de @ GauravKachhadiya:

IndexIgnore *.jpg

significa "ocultar apenas arquivos de extensão .jpg da indexação.

A diretiva IndexIgnore usa expressão curinga para corresponder a diretórios e arquivos.

  • um caractere estrela, ele corresponde a quaisquer caracteres em uma string, por exemplo: foo ou foo.extension, no exemplo a seguir, vamos desativar a listagem de diretórios, nenhum arquivo ou diretório aparecerá no índice:

    IndexIgnore *

Ou, se você deseja ocultar arquivos espaciais, na lista de diretórios, podemos usar

IndexIgnore *.php

* .php => corresponde a uma sequência que começa com qualquer caractere e termina com .php

O exemplo acima oculta todos os arquivos que terminam com .php


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.