Sometimes you just want to publish a directory on the file system the easy way, which is why the mod_autoindex module for Apache exists.
The simplest way to have Apache list a directory is to add the “Indexes” parameter to the Options directive inside the directory definition where listing is desired. Like this:
Options FollowSymLinks Indexes MultiViews
Red Hat Enterprise and Fedora Linux come with a supplemental conf file that enables some (but nowhere near all) autoindex features (found at /etc/httpd/conf.d/autoindex.conf). Another way of controlling autoindex is to set various features up in an .htaccess file in the target directory.
The default Red Hat config turns on FancyIndexing, which out of the box chops off the ends of long file names and inserts a continuation (“..>”). I find this extremely annoying, and unhelpful, when trying to navigate listings. To fix it all I had to do was add the “NamedWidth=*” parameter to the IndexOptions line in autoindex.conf, thus:
IndexOptions FancyIndexing HTMLTable VersionSort NameWidth=*
If you’re like me and link to quite a few directory listings, you might want to set a “global” header for all those pages. Doing that requires a couple of adjustments to autoindex.conf, as well as creating a header and footer file. In the following example the directories I’m publishing are /data/install, symlinked to /var/www/html/install and /data/media, symlinked to /var/www/html/media. My primary stylesheet is the same main.css that features in my using a movie as a web page background.
Edit autoindex.conf to change the text alongside ReadmeName and HeaderName, thus:
ReadmeName /include/FOOTER.html HeaderName /include/HEADER.html
Now create those files under /var/www/html/include (or wherever your DocumentRoot points to).
<!DOCTYPE html> <html> <head> <title>Casa Lembo</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link rel=stylesheet href="/css/main.css"> </head> <body> <header> <h2>Casa Lembo</h2> <nav> <a href="https://onemoretech.wordpress.com">Onemoretech </a>• <a href="http://www.bbc.com/news">Global News </a>• <a href="http://tycho.usno.navy.mil/simpletime.html">Current Time </a></br> <a href="/media/podcasts/podcasts.html">Media Streams </a>• <a href="/install/">Software Library </a>• <a href="/media/">Shared Media </a>• </nav> </header> <main> <article>
</article> </main> </body> </html>
Then restart Apache to make these changes effective. Test by going to one of the published directories and checking to see if the header displays.