Как я могу настроить Apache для обслуживания SVN с этой конкретной конфигурацией URL?
-
22-08-2019 - |
Вопрос
У меня есть VPS, и я пытаюсь разместить несколько проектов SVN.Я бы хотел, чтобы пути URL-адресов были такими:
http://svn.domain.com -> Welcome HTML page (at /var/www/svn.domain.com/httpdocs/index.php)
http://svn.domain.com/project1 -> Project 1 SVN Root
http://svn.domain.com/project2 -> Project 2 SVN Root
http://svn.domain.com/project3 -> Project 3 SVN Root
Однако в приведенном ниже коде первое (приветственная HTML-страница) не отображается, поскольку блок Location имеет приоритет над DocumentRoot.
Установка блока Location на <Location /repos>
работает, но тогда мои URL-адреса становятся http://svn.domain.com/repos/project1
, что мне не нравится.
Какие-либо предложения?
<VirtualHost *>
ServerName svn.domain.com
DocumentRoot /var/www/svn.domain.com/httpdocs
<Location />
DAV svn
SVNParentPath /var/svn
SVNIndexXSLT "/svnindex.xsl"
AuthzSVNAccessFile /var/svn/access
SVNListParentPath On
# try anonymous access first, resort to real
# authentication if necessary.
Satisfy Any
Require valid-user
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /var/svn/passwd
</Location>
</VirtualHost>
<Directory /var/svn>
Allow from all
</Directory>
Решение
вы можете использовать СВНПАТХ директива, однако вам необходимо настроить три локации (для каждого проекта требуется своя)
Другие советы
Вы можете обойти это без необходимости менять конфигурацию Apache каждый раз при добавлении нового проекта, добавив поддомен для ваших репозиториев SVN.В итоге у вас получится что-то вроде этого:
<VirtualHost *>
ServerName svn.domain.com
DocumentRoot /var/www/svn.domain.com/httpdocs
<Location /svn>
DAV svn
SVNParentPath /var/svn
SVNIndexXSLT "/svnindex.xsl"
AuthzSVNAccessFile /var/svn/access
SVNListParentPath On
# try anonymous access first, resort to real
# authentication if necessary.
Satisfy Any
Require valid-user
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /var/svn/passwd
</Location>
<Directory /var/svn>
Allow from all </Directory>
<Directory /var/www/svn.domain.com/httpdocs>
# Doc. root directives here</Directory>
Затем вам нужно будет получить доступ к своим репозиториям с помощью URL-адресов вида http://svn.domain.com/svn/project1/, но если вы хотите добавить project4 и т. д.все, что вам нужно сделать, это добавить новый репозиторий в /var/svn.
Как насчет mod_rewrite?Вы можете создать папку для вещей, не относящихся к SVN (http://example.com/info/), затем используйте mod_rewrite для перенаправления запросов «/» или «/index.php» на «/info/index.php».Это сработает?