2009-03-28 6 views
4

Ich habe ein VPS und ich versuche, mehrere SVN-Projekte zu hosten. Ich mag die URL-Pfade so sein:Wie kann ich Apache einrichten, um SVN mit dieser speziellen URL-Konfiguration zu versorgen?

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 

jedoch mit dem folgenden Code, das erste, was (Welcome HTML-Seite) nicht angezeigt, da der Ort Block Vorrang vor dem DocumentRoot nimmt.

Einstellung der Standort-Block auf <Location /repos> funktioniert, aber dann werden meine URLs http://svn.domain.com/repos/project1, die ich nicht mag.

Irgendwelche Vorschläge?

<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> 

Antwort

1

Sie SVNPath Richtlinie verwenden können, jedoch müssen Sie drei Standorten eingerichtet (jedes Projekt braucht seine eigene)

+0

Ich hatte gehofft, ich würde es nicht so machen müssen, und dass ich nur in meinem Apache-Konfiguration Know-how fehlte: -/ –

0

Sie dieses Problem umgehen können, ohne Ihre Apache-Konfiguration jedes Mal ändern müssen Sie hinzufügen ein neues Projekt, indem Sie eine Subdomain für Ihre SVN-Repositories hinzufügen. Sie würden mit etwas am Ende wie folgt:

<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> 

Sie würden dann Ihre Repositories mit URLs der Form http://svn.domain.com/svn/project1/ zugreifen müssen, aber wenn Sie project4 hinzufügen möchten usw. alles, was Sie tun müssen, ist das hinzufügen neues Repository unter/var/svn.

+0

Sie meinen 'Unterverzeichnis', nicht Subdomain, und das ist wahr, aber es ist was Ich habe versucht zu vermeiden :). Trotzdem danke. –

0

Was ist mit mod_rewrite? Sie könnten einen Ordner für Nicht-SVN-Dateien einrichten (http://example.com/info/), dann verwenden Sie mod_rewrite, um Anfragen für '/' oder '/index.php' nach '/info/index.php' umzuleiten. Funktioniert das?

+0

Ich glaube, ich habe diese Lösung versucht und es ist fehlgeschlagen. Ich weiß nicht genau warum, ich bin mir ziemlich sicher, dass es einfach nicht funktioniert hat (tm). Ich nehme morgen einen weiteren Hack und melde mich zurück. –

+1

Die Verwendung eines Standorts unter einem DAV würde nicht funktionieren, da DAV in einer Sublocation nicht deaktiviert werden kann, nachdem es aktiviert wurde. Aber das Umschreiben von Mods, um zu einer anderen Domain umzuleiten, funktioniert 'RewriteRule ^/info /(.*)$ http: // someotherhost/info/$ 1 [R]'. – mandrake

Verwandte Themen