Назад | Перейти на главную страницу

Apache - Конфигурация - Получение пути внутри относительного тега каталога

у меня есть конфигурация gitweb для apache:

#/etc/apache2/conf.d/gitweb
RewriteEngine on
RewriteRule ^/\~([a-z]*\.[a-z]*)/gitweb/([a-zA-Z0-9_\-]+\.git)/?(\?.*)?$ /cgi-bin/gitweb.cgi/$1 [L,PT]

<Directory /home/*/*/public_apache/gitweb>
  Options Indexes FollowSymlinks ExecCGI
  DirectoryIndex /cgi-bin/gitweb.cgi
  AllowOverride None
</Directory>

Моя проблема в том, что я могу установить только один корень проекта для gitweb. Итак, я хочу установить переменную для конфигурации gitweb. Что-то вроде:

SetEnv  GITWEB_CONFIG_PROJECT_ROOT  /home/$1/$2/public_git

Так что я мог использовать его в /etc/gitweb.conf. Что-то вроде:

$projectroot = GITWEB_CONFIG_PROJECT_ROOT;

Итак ... Мой вопрос: Как я могу получить путь от Direcotry тег?

Я бы сказал, сделай это с mod_rewrite, что-то вроде :

RewriteRule ^\~([a-z]*\.[a-z]*)/gitweb/([a-zA-Z0-9_\-]+)\.git/?(\?.*)?$ /cgi-bin/gitweb.cgi/$1 [L,PT] [L,PT,E=GITWEB_CONFIG_PROJECT_ROOT:/home/$1/$2/public_git]

Это, конечно, если пользователь и часть репозитория находятся там, где я думаю, что они находятся в вашем RewriteRule. Это может не сработать, так как я не знаю всех деталей, но это может дать вам подсказку, куда двигаться дальше.