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.