= Configure Apache for multiple projects
These instructions allow you to set up Apache to automatically serve multiple Trac projects for you.
Start by creating a project directory in your document root (`/var/www` in this example). Projects will be accessed as `http://hostname/projects/projectname`.
Copy (or symlink) `trac.cgi` to this directory together with a file named index.html. This will be shown when users try to access nonexistent projects.
Then create your trac projects with trac-admin. It is important that they are all placed in the same directory. In this example we will use `/var/lib/trac`. Add the following to your Apache configuration:
{{{#!apache
RewriteEngine on
RewriteRule ^/projects/+$ /projects/index.html [L]
RewriteCond /var/lib/trac/$1 -d
RewriteRule ^/projects/([[:alnum:]]+)(/?.*) /projects/trac.cgi$2 [S=1,E=TRAC_ENV:/var/lib/trac/$1]
RewriteRule ^/projects/(.*) /projects/index.html
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
AuthType Basic
AuthName "trac"
AuthUserFile /path/to/trac.htpasswd
Require valid-user
}}}
Make sure you have the rewrite module loaded or compiled in Apache.
{{{LoadModule rewrite_module modules/mod_rewrite.so}}}
Now, when you add another project, you don't need to edit any Apache config. The only file you may want to edit is index.html to make it list the new project. If you think this is too much work, replace it with a Python cgi script that does it for you.
[wiki:TracStandalone tracd] and TracModPython can also serve multiple projects.
----
See also: TracGuide, TracInstall