ServerRoot "/usr/local/apache2/"
# Server's options
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
Listen 80
LoadModule access_module modules/mod_access.so
#LoadModule auth_module modules/mod_auth.so
#LoadModule auth_anon_module modules/mod_auth_anon.so
#LoadModule auth_dbm_module modules/mod_auth_dbm.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule ssl_module modules/mod_ssl.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
#LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule asis_module modules/mod_asis.so
#LoadModule info_module modules/mod_info.so
#LoadModule cgi_module modules/mod_cgi.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule imap_module modules/mod_imap.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
# Change the server's owner
User apache
Group apache
MaxClients 150
StartServers 5
MinSpareServers 5
MaxSpareServers 10
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
# Server info
ServerAdmin admin@myedesksite.org
ServerName www.myedesksite.org:80
UseCanonicalName Off
DocumentRoot "/opt/www/edesk2"
# Minimal permissions for any directory
Options -FollowSymLinks
AllowOverride None
# More permissive options for sub-directories.
AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex index.html
# Security filters, saves .htaccess files
Order allow,deny
Deny from all
Satisfy All
# Mime types information
TypesConfig conf/mime.types
DefaultType text/plain
# Logging
HostnameLookups Off
ErrorLog logs/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
# Info given out. It can be Full,OS,Minor,Minimal,Major,Prod
ServerTokens Minimal
ServerSignature Off
# Set the default charset, prevents XSS
AddDefaultCharset ISO-8859-1
# Ugly but important hacks
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-care-fully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* [F]
#####################################################################################
RewriteCond %{HTTP_HOST} ^myedesksite\.org [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.myedesksite.org/$1 [R]
#####################################################################################
# http://uname.myedesksite.org/anything -> /~uname/anything
# http://www.uname.myedesksite.org/anything -> /~uname/anything
RewriteCond %{ENV:host_done} !^1$
RewriteCond %{HTTP_HOST} ^(www\.)?.+\.myedesksite\.org$
RewriteCond %{HTTP_HOST} !^www\.myedesksite\.org$
#RewriteCond %{HTTP_HOST} !^dev\.myedesksite\.org$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^(www\.)?(.+)\.myedesksite\.org(.*) /~$2$3 [E=host_done:1]
####################################################################################
RewriteRule ^(/.*)?/download/([^/]+)$ $1/cf_download.cfm [PT]
# ~uname/cf_item_management.cfm -> /cf_item_management.cfm?u_user=uname
RewriteRule ^/~([^/]+)/([^/]+)$ /$2?u_user=$1 [QSA,PT]
# ~uname/i/1234 -> /cf_download.cfm?u_user=uname&u_item=1234
RewriteRule ^/~([^/]+)/i/([0-9]+)$ /cf_download.cfm?u_user=$1&u_item=$2 [QSA,PT]
# ~uname/ -> /my_index.cfm?u_user=uname
RewriteRule ^/~([^/]+)/$ /my_index.cfm?u_user=$1 [QSA,PT]
# ~uname/images/ -> /images/
RewriteRule ^/~([^/]+)/(images/.+)$ /$2 [PT]
# ~uname/questions/ -> /questions/
RewriteRule ^/~([^/]+)/(questions/.+)$ /$2 [PT]
# ~uname/tests/ -> /tests/
RewriteRule ^/~([^/]+)/(tests/.+)$ /$2 [PT]
# ~uname/users/ -> /users/
RewriteRule ^/~([^/]+)/(users/.+)$ /$2 [PT]
# ~uname/pdf_scratch/ -> /pdf_scratch/
RewriteRule ^/~([^/]+)/(pdf_scratch/.+)$ /$2 [PT]
# ~uname/results/ -> /results/
RewriteRule ^/~([^/]+)/(results/.+)$ /$2 [PT]
# ~uname/blog -> /blog/
RewriteRule ^/~([^/]+)/(blog/.+)$ /$2 [PT]
# ~uname/ezcal -> /ezcal/
RewriteRule ^/~([^/]+)/(ezcal/.+)$ /$2 [PT]
# ~uname/sm -> /sm/
RewriteRule ^/~([^/]+)/(sm/.+)$ /$2 [PT]
# ~uname/themes -> /themes/
RewriteRule ^/~([^/]+)/(themes/.+)$ /$2 [PT]
# force the username to be trailed by a /
RedirectMatch ^/~([^/]+)$ /~$1/
#####################################################################################