По умолчанию trac, когда работает через mod_python, всё своё содержимое выдаёт через него, хотя с раздачей статичных файлов — картинок, стилей и яваскриптов — сам апач справляется не хуже и, что главное, существенно быстрее: на моей, нагруженной иксами, машине, где заодно живёт и апач с траком, разница в скорости (по результатам замеров
файрбагом) достигает ста и более раз.
С одной стороны, можно сменить адреса некоторых общих картинок
find /var/db/trac -name trac.ini -exec perl -pi -e 's{= common}{= /trac}' '{}' ';'
и раздавать эти картинки статически:
<IfModule alias_module>
Alias /trac/ /path/to/trac/htdocs/
Но зачем нам полумеры? Надо
всю статику быстро раздавать. Поэтому подкаталог
chrome
не должен обрабатываться мод_питоном:
<LocationMatch "/projects/[^/]+/chrome">
SetHandler None
</LocationMatch>
Чтоб апач не ругался «404 Not Found», надо создать алиасы для этих каталогов. По идее, для этого должна использоваться директива
AliasMatch
, но у меня она не заработала: апач, вместо того, чтоб отдавать файлы, начинает бесконечно перенаправлять браузер по всё более длинному адресу, что браузеру достаточно быстро надоедает. Поэтому приходится ставить кучу директив
Alias /projects/projectname/chrome/common /path/to/trac/htdocs/
которые можно получить командой
ls /var/db/trac | perl -nl -e 'print "\t\tAlias /projects/$_/chrome/common /usr/local/www/trac/htdocs"'
Метод, конечно, какой-то неправильный, но всё-таки вполне работоспособный.