Lighttpd Control a Directory Listing With mod_dirlisting

last updated in Categories Howto, lighttpd, Linux, Security, UNIX

Lighttpd web server will generate a directory listing if a directory is requested and no index-file was found in that directory. mod_dirlisting is one of the modules that is loaded by default and doesn’t have to be specified on server.modules to work.


Task: Enable Directory Listings Globally

Open lighttpd configuration file:
# vi /etc/lighttpd/lighttpd.conf
Append / modify
server.dir-listing = "enable"
dir-listing.activate = "enable"
Save and close the file. Restart lighttpd:
# /etc/init.d/lighttpd restart
To disable directory listing, use:
dir-listing.activate = "disable"

Enable directory listing only for a directory

You can also enable or disable listing on selected url / directory combination. For example, display directory listing only for /files/:
$HTTP["url"] =~ "^/files($|/)" { server.dir-listing = "enable" }
$HTTP["url"] =~ "^/files($|/)" { dir-listing.activate = "enable" }

Further readings:


Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

3 comment

  1. Hello.

    Another way to avoid the directory listing is creating an index.html with no content in the directory that you don’t want to be listed. Nothing will happen when that url is opened and it is a quite fast method I think.

    Maybe this way can be easily “hacked”… I don’t really know.


  2. I didn’t like the idea of all my wordpress directories free for browsing, so I tried the global disable. It didn’t work, but it does work when I specify it in each of the websites I’ve defined in my lighttpd.conf file.

    $HTTP[“url”] == “website” { dir-listing.activate = “disable” }

    Have a question? Post it on our forum!