I've often searched for a replacement for the standard icons that come with Apache. The default icons date back to Mosaic for X and have been included in the NCSA httpd and Apache server distributions. These continue to be distributed with even the latest versions of Apache. I haven't found any publicly available replacements for these icons, so I decided to build my own.
I didn't reinvent the world here, I just modernized the standard set. The task of creating a whole new representational logic was too great a task for my purposes. Furthermore, the prevalence of these icons makes them easily understood.
All icons maintain the original size so they can be used as a drop in replacement.
Installation & Configuration
The icon set is meant to be a drop in for a standard Apache install. If you have full access to the server, you can just replace the current icons with the icons in this set. On OS X, the standard installation location is /usr/share/httpd/icons. This directory is referenced by a global directive in the httpd.conf file. This includes an alias for /icons/ that is resolved for every domain being served.
On OS X and Darwin, this directory is owned by the system (root) with the group ownership belonging to "wheel". It is best to follow the same permission model when replacing these files.
Check the permissions of the directory and its contents.
cd /usr/share/httpd ls -laThis should return something similar to:
total 0 drwxr-xr-x 3 root wheel 102 23 Sep 2003 . drwxr-xr-x 44 root wheel 1496 27 Sep 2003 .. drwxr-xr-x 156 root wheel 5304 9 Oct 16:51 iconsLook inside of the icons folder and check the permissions their. If the ownership and/or permissions are incorrect, then the following should rectify the issue:
sudo chown -R root:wheel ./icons sudo chmod -R 644 ./icons sudo chmod 755 ./icons sudo chmod 755 ./icons/smallThe first step recursively changes the owner and group for all items in ./icons. The following command, sudo chmod -R 644 ./icons changes the permissions to read/write for the owner, and read only for all others. The -R flag indicates to perform recursively. This is the quick way to modify all of the documents. The following commands correct the permissions on the directories, by enabling the execution bit which is required for users to access these directories.
Other Peoples Servers
If you are using someone else's computer, or your site is hosted by a webhosting company, it is likely that you won't have access to make this kind of modification to the server. Here is where the .htaccess file comes in handy.
The .htaccess file is just a list of directives that are observed by Apache. It essentially extends the httpd.conf file on a localized level. By default, the standard Apache install includes an Alias directive for /icons which cannot be overridden by the .htaccess file. However, the directives pertaining to directory listings can be localized.
The configuration that I am using on this site is available for download. This configuration is derived from the default <IfModule mod_autoindex.c> block. The primary modification made was to set the icon paths to the new icons. In my configuration, I store the new icons at the top level of my site in a directory named /icon. I then searched and replaced /icons with /icon. A shortened exerpt is below:
<IfModule mod_autoindex.c> AddIconByEncoding (CMP,icon/compressed.gif) x-compress x-gzip AddIconByType (TXT,icon/text.gif) text/* ... AddIconByType (VID,icon/movie.gif) video/* AddIcon icon/binary.gif .bin .exe ... AddIcon icon/blank.gif ^^BLANKICON^^ DefaultIcon icon/unknown.gif </IfModule>
Also located in the icons directory is a header file. This header is used by the server when generating a directory listing. It is a standard html document with the exception of the closing </body> and </html> tags. This document can be modified to emulate the look and feel of ther rest of your site. For my site, I have included a logo and a search form.
And for our last stupid .htaccess tricks, you can use this to modify the error documents that your site uses. This modification is made outside of the IfModule block, with the following directives:
# "400 Bad Request", ErrorDocument 400 /errordocs/400.php # "401 Authorization Required", ErrorDocument 401 /errordocs/401.php # "403 Forbidden", ErrorDocument 403 /errordocs/403.php # "404 Not Found", ErrorDocument 404 /errordocs/404.php # "408 Request Timeout" ErrorDocument 408 /errordocs/408.php # "500 Internal Server Error", ErrorDocument 500 /errordocs/500.php
These directives tell Apache which document to serve when they occur. For my site, I have set up the 404.php page to have a search form, so if a user attempts to connect to a page that no longer exists, they are in a position to immediatly search for what they were looking for. Other uses my be to setup random redirets to anyone getting a "Forbidden" error. Unlike the header document in the directory listing, the error documents are standalone pages.
They are being placed in public domain, however, I am requesting that proper credit to myself and the original icon creators is given and that the provided read me file is distributed with the icons.