Apache, svn na raiz do domínio com uma exceção

2

Eu quero configurar o SVN de tal forma que o svn.domain.com/ liste diretamente os repositórios SVN. Para poder tornar a visualização da Web mais agradável, estou usando um SVNIndexXSLT. Mas eu tenho que servir este arquivo de alguma forma para o usuário final.

Então, quero configurar um local ( /repos-web , por exemplo) que servirá arquivos, em vez de svn.

Atualmente tenho a seguinte configuração:

<VirtualHost *:80>
        ServerName svn.domain.com
        DocumentRoot /home/user/svn/svnweb
        ErrorLog ${APACHE_LOG_DIR}/error.log
        <Location />
                AuthType Basic
                AuthName "Authentication required"
                AuthUserFile "myauthfile"
                Require valid-user
                order allow,deny
                allow from all

                DAV svn
                SVNParentPath /home/user/svn/repositories
                SVNListParentPath on
                SVNIndexXSLT "/repos-web/view/repos.xsl"
        </Location>
        <Location /repos-web>
                DAV off
        </Location>
</VirtualHost>

Mas o link simplesmente retorna:

Could not open the requested SVN filesystem

Eu tentei alterar o <Location /> em <LocationMatch "^/(?!repos-web)"> , mas isso não ajudou em nada.

É claro que uma solução seria servir o arquivo xslt em outro domínio / subdomínio, mas isso é mais uma solução do que uma solução.

    
por Veda 15.01.2014 / 21:09

1 resposta

1

A questão principal é que você não pode desligar o Dav para uma subpasta. Então é por isso que a maioria das pessoas habilita Dav para uma sublocação como / svn.

Por outro lado, com alguns truques, pode funcionar se você usar uma regra de reescrita e redirecionar para outro domínio que tenha os arquivos xsl. Você precisará definir o cabeçalho Access-Control-Allow-Origin no outro domínio para informar que o domínio original está correto. Algo como:

<Location />
  Header append Access-Control-Allow-Origin http://www.example.com
</Location>

Suas regras de reescrita no seu domínio principal seriam:

<Location /repos-web>
  RewriteEngine On
  RewriteRule .*$ http://repos.example.com%{REQUEST_URI} [last,redirect]
</Location>
    
por 15.08.2015 / 00:29