ocultar - Deshabilitar el listado de directorios en apache; pero se debe permitir el acceso a archivos individuales
ocultar index of apache (5)
No quiero usar .htaccess. ¿Cómo debo cambiar los atributos de mi directorio?
<VirtualHost *:80>
ServerName abc.com
DocumentRoot /usr/share/uploads
<Directory " /usr/share/uploads">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
La forma más sencilla sería colocar un index.html vacío (o lo que sea que Apache esté configurado para entregar de forma predeterminada) dentro de ese directorio. Esta no es una solución real sino una solución muy simple. El usuario que navega ese directorio solo verá una página en blanco en blanco.
Además, podría usar un script (como index.php) que emula el listado de directorios y solo muestra algunos archivos especiales.
La solución @Deepak no funcionó para mí. Este hizo:
En la configuración de apace principal /etc/apache2/httpd.conf solo agregue:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
Y funcionará para todos ustedes dominios y subdominios. Sin archivo .htaccess.
Realmente no pude encontrar una respuesta directa en internet; incluso en la documentación de apache. Finalmente, pudo encontrar la solución a través de pocas iteraciones; necesitamos usar Opciones y el valor NO debe contener Índices.
<Directory "/usr/share/uploads">
Options Includes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Si está utilizando Debian / Ubuntu, vaya a la terminal y escriba
sudo a2dismod autoindex
sudo service apache2 restart
Si está utilizando Centos / Fedora, simplemente haga:
mv /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/autoindex.bkp
/etc/init.d/httpd restart
Y similarmente en otros sistemas operativos o distros ...
Esto debería deshabilitar el módulo de apache que hace que esas listas de directorios sofisticadas (normalmente inútiles y de seguridad). Además, como bono, ganas un poco de rendimiento :-)
Todo hecho arriba, pero la información del directorio sigue subiendo? Si usa index.php, en lugar de index.html, verifique lo siguiente:
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>