I am not able to enable directory listing in my apache web server. I have tried various solutions posted but not working. I just freshly installed httpd 2.4.6 and enabled https using ssl.conf under /etc/httpd/conf.d/ssl.conf dir and trying to access https://server.example.com/ but this is not listing the dir. These are the config in ssl.conf
DocumentRoot "/home/userx/Downloads/"
ServerName server.example.com:443
Below is what it has in ssl.conf under the VirtualHost element. Files and the first Directory elements were already there when I installed, I just added Directory for "/home/userx/Downloads". I want to browse the contents of /home/userx/Downloads when I access the URL https://server.example.com/. What am I missing here ?
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
<Directory "/home/userx/Downloads">
Options +Indexes
AllowOverride all
</Directory>
This question is related to
apache
httpd.conf
I had to disable selinux to make this work. Note. The system needs to be rebooted for selinux to take effect.
According to the Apache documentation, found here, the DirectoryIndex
directive needs to be specified in the site .conf
file (typically found in /etc/apache2/sites-available
on linux).
Quoting from the docs, it reads:
If no file from the
DirectoryIndex
directive can be located in the directory, then mod_autoindex can generate a listing of the directory contents. This is turned on and off using theOptions
directive. For example, to turn on directory listings for a particular directory, you can use:<Directory /usr/local/apache2/htdocs/listme> Options +Indexes </Directory>
To prevent directory listings (for security purposes, for example), you should remove the Indexes keyword from every Options directive in your configuration file. Or to prevent them only for a single directory, you can use:
<Directory /usr/local/apache2/htdocs/dontlistme> Options -Indexes </Directory>
See if you are able to access/list the '/icons/' directory. This is useful to test the behavior of Directory in Apache.
for eg : You might be having below config by default in your httpd.conf file.So hit the url : IP:Port/icons/ and see if it list the icons or not.You can also try by putting the 'directory/folder' inside the 'var/www/icons'.
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
If it does works then you can crosscheck or modify your custom directory configuration with '' configuration.
This one solved my issue which is SELinux setting:
chcon -R -t httpd_sys_content_t /home/*
One way is by creating a soft link to whichever directory you want to list in the /var/www/html/ directory.
sudo ln -s /home/ /var/www/html/
Keep in mind the security.
Try this.
<Directory "/home/userx/Downloads">
Options +Indexes
AllowOverride all
Order allow,deny
Allow from all
Require all granted
</Directory>
If that doesn't work, you probably have 'deny indexes' somewhere that's overriding your config.
Once I changed Options -Index
to Options +Index
in my conf file, I removed the welcome page and restarted services.
$ sudo rm -f /etc/httpd/conf.d/welcome.conf
$ sudo service httpd restart
I was able to see directory listings after that.
I solved the problem by enabling the mod_autoindex
from Apache. It was disabled by default.
sudo a2enmod autoindex
Source: Stackoverflow.com