¿Cómo desactivo la exploración de directorios?


Respuestas:


420

Cree un archivo .htaccess que contenga la siguiente línea:

Options -Indexes

Esa es una opción. Otra opción es editar su archivo de configuración de apache.

Para hacerlo, primero debe abrirlo con el comando:

vim /etc/httpd/conf/httpd.conf

Luego encuentre la línea: Opciones Índices FollowSymLinks

Cambie esa línea a: Opciones FollowSymLinks

Por último, guarde y salga del archivo, y reinicie el servidor apache con este comando:

sudo service httpd restart

(Tienes una guía con capturas de pantalla aquí ).


14
Esto incluso funciona en un <Directory> o <Location> en un archivo .conf real
chrismarx

1
@chrismarx ¿en qué archivo .conf lo pondría? .htaccess no parece estar habilitado en mi servidor, y he leído que es mejor no usarlo de todos modos. Sin embargo, tengo acceso a todos los archivos del servidor, ya que es un vps.
Charles John Thompson III

1
Estoy atascado en esta misma pregunta, agregué el archivo .htaccess con el código al mismo directorio que mi página web, pero todavía me está dando una alerta de navegación de directorio. ¿Estoy haciendo algo mal?
Randy Gilman

10
Tenga en cuenta que .htaccesspodría estar apagado. Por favor, consulte la AllowOverrideDirectiva. Si está configurado en None, entonces .htaccessestá apagado. Puede encenderlo configurando AllowOverride All. Para ser más precisos, Allsignifica todas las directivas de Apache.
Julian

2
Si tienes control de http.conf, mejor hazlo allí. Hay un éxito de rendimiento con htaccess
Itay Moav -Malimovka

298

La mejor manera de hacerlo es deshabilitarlo con el servidor web apache2. En mi Ubuntu 14.X - abra el /etc/apache2/apache2.confcambio de

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

a

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

luego reinicie apache:

sudo service apache2 reload

Esto deshabilitará la lista de directorios de todas las carpetas que apache2 sirve.


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

2
@ Jay También probé "Opciones-índices" pero Apache no comenzó después. Estoy ejecutando la versión del servidor: Apache / 2.4.18 (Ubuntu). Sin embargo, el uso de "Opciones FollowSymLinks" funcionó según la respuesta de Dung. Tengo curiosidad por saber qué versión de Apache y sistema operativo está ejecutando. Tal vez es una cosa de versión?
MikeyE

@Jay @MikeyE Lo mismo aquí; Apache no volvería a cargar usando-Indexes
Crimbo

1
@Jay @MikeyE Apache parece recargarse / reiniciarse si se eliminaFollowSymLinks
Crimbo

2
Ejecutar apachectl configtestdespués de agregar Options -Indexes FollowSymLinksa httpd.conf escupe el siguiente error: "O todas las opciones deben comenzar con + o -, o ninguna opción puede". Por lo tanto, lo que funcionará esOptions -Indexes +FollowSymLinks
John T.

45

Además de los dos métodos mencionados anteriormente (edite /etc/apache2/apache2.conf o agregue Options -Indexes en el archivo .htaccess), aquí hay otro.

a2dismod autoindex

Reinicie el servidor apache2 luego

sudo service apache2 restart

44
Puede usar a2dismod -f autoindexpara la ejecución de comandos sin bloqueo .
Константин Ван

Buena opción nuclear! Esto funciona para Aliascarpetas y cualquier otra ruta servida por Apache.
kontextify

¿Debo estar al tanto de cualquier efecto secundario?
Naresh Kumar

28

Editar / Crear un .htaccessarchivo dentro /galeriascon esto:

Options -Indexes

La exploración del directorio es proporcionada por el módulo mod_autoindex .


-Los índices en el directorio raíz no funcionan, en apache2.4.33, tuve que usar la respuesta de @Sarvar Nishonboyev
Felipe Valdes

1
@FelipeValdes Lea atentamente tanto la pregunta como mi respuesta. No estamos hablando del directorio raíz sino de un subdirectorio y se ha solicitado que sea factible en un .htaccessarchivo (que no es la forma más eficiente pero a menudo es la única opción en cuentas de alojamiento compartido o con administradores de sistemas ocupados).
Álvaro González

23

Puede colocar un archivo vacío llamado index.htmlen cada directorio que no desea enumerar. Esto tiene varias ventajas:

  • (Generalmente) requiere una configuración cero en el servidor.
  • Seguirá funcionando, incluso si el administrador del servidor decide usar "AllowOverride None" en la configuración del servidor. (¡Si usa .htaccessarchivos, esto puede generar muchos mensajes de "Error 500 - error interno del servidor" para sus usuarios!).
  • También le permite mover sus archivos de un servidor a otro, de nuevo sin tener que meterse con la configuración de Apache.

Teóricamente, la autoindexación podría ser activada por un archivo diferente (esto está controlado por la DirectoryIndexopción), pero todavía tengo que encontrar esto en el mundo real.


¡Aviso! Esto solo puede funcionar con la Directiva DirectoryIndexindex.html definida principalmente .
nyedidikeke

18

Una de las cosas importantes es configurar un servidor web apache seguro es deshabilitar la exploración de directorios. De forma predeterminada, apache viene con esta función habilitada, pero siempre es una buena idea deshabilitarla a menos que realmente la necesite. Abra el archivo httpd.conf en la carpeta apache y busque la línea que se ve de la siguiente manera:

Options Includes Indexes FollowSymLinks MultiViews

luego elimine los índices de palabras y guarde el archivo. Reiniciar apache. Eso es


1
Perfecto. Desactívelo en toda la máquina. ¿Por qué estaría habilitado esto de forma predeterminada? No tengo idea ...
eduncan911

1
Esto funcionó para mí en Ubuntu (apache2.conf) pero .htaccess Options -Indexes no.
Danniel Little

Esto funcionó para mí en Ubuntu (/etc/apache2/apache2.conf) pero .htaccess Options -Indexes no lo hizo.
user2875289

5

Si elige modificar su archivo httpd.conf para resolver esto y tiene múltiples directivas de Opciones, entonces debe agregar un - o un + antes de cada directiva. Ejemplo:

Opciones -Indexes + FollowSymLinks


3

Esta no es una respuesta, solo mi experiencia:

En mi Ubuntu 12.04 apache2, no encontré Indexesen apache2.conf o httpd.conf, por suerte lo encontré sites-available/default. Después de eliminarlo, ahora no ve el listado del directorio. Puede que tenga que hacerlo por sites-available/default-ssl.


2

Abra su archivo .htaccess e ingrese el siguiente código en

Options -Indexes

Asegúrese de presionar la tecla ENTER (o la tecla RETURN si usa una Mac) después de ingresar las palabras "Opciones-Índices" para que el archivo termine con una línea en blanco.


2

Agregue esto en su archivo .htaccess:

Options -Indexes

Si no funciona por alguna razón, intente esto dentro de su archivo .htaccess:

IndexIgnore *

1

Para completar la respuesta de @ GauravKachhadiya:

IndexIgnore *.jpg

significa "ocultar solo los archivos de extensión .jpg de la indexación.

La directiva IndexIgnore usa la expresión comodín para hacer coincidir los directorios y archivos.

  • un carácter de estrella, coincide con cualquier carácter en una cadena, por ejemplo: foo o foo.extension, en el siguiente ejemplo, vamos a desactivar la lista del directorio, no aparecerán archivos o directorios en el índice:

    IndexIgnore *

O si desea ocultar archivos espaciales, en el listado del directorio, entonces podemos usar

IndexIgnore *.php

* .php => coincide con una cadena que comienza con cualquier carácter y termina con .php

El ejemplo anterior oculta todos los archivos que terminan con .php


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.