If you're running a web server, first simple logic says that you should keep all of your web pages in a single directory tree that's got the same directory structure as your web site. And you
can do this and have it work well in a simple case.
But what if you want to do a major upgrade from time to time, but leave your icons and help pages untouched? What if you want to make the standard pages supplied with Apache available but from a different part of the disc? What if you want to provide users each with their own area as part of the tree? What if you want to have a separate area for executable programs so they don't get mixed in with the documents?
You can achieve all of these features via Apache's alias and scriptalias commands, and set up the permissions on different areas using directory instructions. You must do that latter in parallel to safeguard your security.
Alias /icons/ "/usr/share/httpd/icons/"
ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"
Note the trailing slashes (important) and the difference between the alias and scriptalias commands - an alias is used for diverting directories of documents and a scriptalias for directories of programs; with a scriptalias, AS WELL AS diverting the URL, the web server will send out the results of RUNNING the file it points at rather than the CONTENTS of the file.
If you want to have one web page accessible under several names - for example is you're running a script to feed everything in a directory from a database - then have a look at mod_rewrite rather than aliases. A subject for another day.
(written 2005-12-12, updated 2006-06-05)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
A603 - Web Application Deployment - Further httpd Configuration [345] Spotting a denial of service attack - (2005-06-12)
[466] Separating 'per instance' data from binaries and web sites - (2005-10-16)
[550] 2006 - Making business a pleasure - (2006-01-01)
[631] Apache httpd to Tomcat - jk v proxy - (2006-03-03)
[649] Denial of Service ''attack'' - (2006-03-17)
[662] An unhelpful error message from Apache httpd - (2006-03-30)
[755] Using different URLs to navigate around a single script - (2006-06-11)
[853] To list a directory under httpd on a web server, or not? - (2006-09-02)
[934] Clustering, load balancing, mod_rewrite and mod_proxy - (2006-11-21)
[1009] Passing GET parameters through Apache mod_rewrite - (2006-12-27)
[1080] httpd.conf or .htaccess? - (2007-02-14)
[1121] Sharing the load with Apache httpd and perhaps Tomcat - (2007-03-29)
[1207] Simple but effective use of mod_rewrite (Apache httpd) - (2007-05-27)
[1351] Compressing web pages sent out from server. Is it worth it? - (2007-09-14)
[1355] .php or .html extension? Morally Static Pages - (2007-09-17)
[1377] Load Balancing with Apache mod_jk (httpd/Tomcat) - (2007-10-02)
[1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
[1551] Which modules are loaded in my Apache httpd - (2008-02-23)
[1554] Online hotel reservations - Melksham, Wiltshire (near Bath) - (2008-02-24)
[1564] Default file (MiMe types) for Apache httpd and Apache Tomcat - (2008-03-04)
[1566] Strange behaviour of web directory requests without a trailing slash - (2008-03-06)
[1619] User and Group settings for Apache httpd web server - (2008-04-22)
[1636] What to do if the Home Page is missing - (2008-05-08)
[1707] Configuring Apache httpd - (2008-07-12)
[1762] WEB-INF (Tomcat) and .htaccess (httpd) - (2008-08-20)
[1767] mod_proxy and mod_proxy_ajp - httpd - (2008-08-22)
[1778] Pointing all the web pages in a directory at a database - (2008-08-30)
[1939] mod_proxy_ajp and mod_proxy_balancer examples - (2008-12-13)
[1954] mod_rewrite for newcomers - (2008-12-20)
[1955] How to avoid duplicating web page maintainance - (2008-12-20)
[1974] Moving a directory on your web site - (2009-01-03)
[2060] Database connection Pooling, SSL, and command line deployment - httpd and Tomcat - (2009-03-01)
[2272] Monitoring and loading tools for testing Apache Tomcat - (2009-07-07)
[2478] How did I do THAT? - (2009-10-26)
[2900] Redirecting a page - silent, temporary or permanent? - (2010-08-03)
[3133] An image from a website that occasionally comes out as hyroglyphics - (2011-01-14)
[3449] Apache Internal Dummy Connection - what is it and what should I do with it? - (2011-09-19)
[3635] Parse error: parse error, unexpected T_STRING on brand new web site - why? - (2012-03-03)
[3862] Forwarding a whole domain, except for a few directories - Apache http server - (2012-09-17)
[3955] Building up from a small PHP setup to an enterprise one - (2012-12-16)
[4001] Helping search engines with appropriate 400 error codes - (2013-02-11)
[4307] Identifying and clearing denial of service attacks on your Apache server - (2014-09-27)
A602 - Web Application Deployment - Apache httpd - Sourcing, Installation, Testing [523] Apache httpd release 2.2 - (2005-12-10)
[660] Stopping and restarting Apache httpd cleanly - (2006-03-29)
[907] Browser -> httpd -> Tomcat -> MySQL. Restarting. - (2006-10-28)
[982] Notes from the white board - (2006-12-14)
[1095] Apache httpd , browser, MySQL and MySQL client downloads - (2007-02-28)
[1292] DHCP automatic IP address v Static IP - (2007-08-06)
[1449] Upgrade Mac OSX to Leopard, Web Server Apache httpd config lost - (2007-11-29)
[1455] Connecting to MySQL 5 from PHP on Mac OSX Leopard - (2007-12-03)
[1731] Apache httpd, MySQL, PHP - installation procedure - (2008-08-01)
[1768] What is built in to this httpd and PHP? - (2008-08-23)
[1945] Summary - Apache httpd build on Linux - (2008-12-14)
[2080] Using ApacheBench and jconsole to test and monitor Tomcat - (2009-03-14)
[2096] Where is my new Apache httpd installed - (2009-03-22)
[2184] Choosing the right version of Java and Tomcat - (2009-05-16)
[2520] Global and Enable - two misused words! - (2009-11-30)
[3426] Automed web site testing scripted in Ruby using watir-webdriver - (2011-09-09)
[4437] Adding a PHP build option, rotating an image based on camera data, and a new look at thumbnails in PHP - (2015-02-22)
Some other Articles
Perl course during the week, getting married at the weekendHalal in MelkshamGetting favicon to work - avoiding common pitfallsGreater Western Franchise AwardedApache httpd - serving web documents from different directoriesVision AND ventureSanta comes to MelkshamJavascript events - a good exampleProof needed? Please just use common sense!