问题
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>
回答1:
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.
回答2:
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.
回答3:
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>
回答4:
I solved the problem by enabling the mod_autoindex
from Apache. It was disabled by default.
sudo a2enmod autoindex
回答5:
This one solved my issue which is SELinux setting:
chcon -R -t httpd_sys_content_t /home/*
回答6:
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.
回答7:
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.
回答8:
I had to disable selinux to make this work. Note. The system needs to be rebooted for selinux to take effect.
来源:https://stackoverflow.com/questions/39239276/how-to-enable-directory-listing-in-apache-web-server