Как я могу настроить Apache для обслуживания SVN с этой конкретной конфигурацией URL?

StackOverflow https://stackoverflow.com/questions/693098

  •  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».Это сработает?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top