Перенаправить определенную подпапку в местоположение mod_dav_svn

Я настраиваю сервер SVN, используя mod_dav_svn. Я хотел бы удовлетворить все следующие:

  • Коллекция репозиториев находится по адресу repos.example.com/ НЕ repos.example.com/svn
  • Содержимое, отличное от svn, доступно с того же сервера по адресу repos.example.com/repo-style. Это для включения информации о стилях. Я согласен с тем фактом, что я не смогу сделать репо с таким именем.

Вот настоящая конфигурация:

<VirtualHost *:80>
  ServerName repos.example.com

  <Location />
    DAV svn

    AuthType Basic
    AuthName "Log In"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    AuthLDAPURL ldap://***
    AuthLDAPBindDN ***
    AuthLDAPBindPassword ***
    require valid-user

    SVNListParentPath on
    SVNParentPath /mnt/repos/svn
    SVNIndexXSLT /repo-style/svnindex.xsl
    AuthzSVNAccessFile /mnt/repos/svn-auth/access
  </Location>
</VirtualHost>

Проблема с вышеупомянутым состоит в том, что когда приходит запрос на repos.example.com/repo-admin, mod_dav_svn отвечает, что хранилище не существует. Мне нужно придумать схему перезаписи, которая изолирует запрос для этого конкретного подкаталога и вместо этого обслуживает обычный html или php или любой другой.

Я пытался использовать перезаписи или псевдонимы для достижения этой цели, но не удалось. Любой вклад будет оценен.

2 ответа

Ну, если я правильно понял ваш вопрос, тогда у вас есть два варианта:

Первый вариант - дать доступ к файлам для чтения всем желающим, но для операций записи требуется авторизованный пользователь. Пример конфигурации:

<Location /svn>
  DAV svn
  SVNParentPath /var/svn

  # Authentication type, name, etc.

  # Authorization: Authenticated users only for non-read-only
  #                (write) operations; allow anonymous reads
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

Узнайте больше здесь: Контроль доступа к одеялу

Второй вариант - использовать AuthzSVNAccessFile. Эта опция позволяет вам иметь более гибкую конфигурацию доступа для каждого каталога и проекта. Пример конфигурации:

[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak

# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =

# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw

# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw

# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw

Узнайте больше здесь: Как работает AuthzSVNAccessFile?

Согласно этому вопросу о порядке слияния местоположений о разделах Apache 2 в конфигурации, объявляется только блок <Location /repo-style> может перезаписать заявленное <Location /> доставки DAV svn,

Как Directory Директива не будет иметь приоритета, единственный вариант - доставить статический контент с Location например, благодаря CGI-сценарию, написанному на вашем любимом языке сценариев.

Другие вопросы по тегам