2009-03-28 20 views
4

私はVPSを持っており、私はいくつかのSVNプロジェクトをホストしようとしています。私はこのようになりURLパスが欲しい:LocationブロックはDocumentRootのよりも優先されるようこの特定のURL設定でSVNを提供するようにApacheを設定するにはどうすればよいですか?

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 /repos>に設定しても、私のURLはhttp://svn.domain.com/repos/project1になります。これは好きではありません。

提案がありますか?あなたのApacheの設定追加するたびに変更することなく、この問題を回避することができ

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

答えて

1

あなたはしかし、あなたは三箇所を設定する必要があり、SVNPATHディレクティブを使用することができます(各プロジェクトは、独自のを必要とする)

+0

私はこのようにする必要はないと思っていましたが、私はApacheの設定で分かりませんでした。 -/ –

0

あなたの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> 

あなたは、フォームhttp://svn.domain.com/svn/project1/のURLをあなたのリポジトリにアクセスする必要があると思いますが、あなたはなどプロジェクト4を追加したい場合は、あなたがしなければならないすべては追加です/ var/svnにある新しいリポジトリ。

+0

サブドメインではなくサブディレクトリを意味しますが、それは何ですか私は回避しようとしていた:)。しかし、ありがとう。 –

0

mod_rewrite?非SVN用のフォルダ(http://example.com/info/)を設定してから、mod_rewriteを使って '/'または '/index.php'のリクエストを '/info/index.php'にリダイレクトすることができます。それは働くだろうか?

+0

私はこのソリューションを試したと信じて失敗しました。なぜ、私はそれがちょうどうまくいかないと確信しています(tm)。私は明日それをもう一度ハックして報告します。 –

+1

有効になったサブロケーションでDAVを無効にできないため、DAVの下の場所を使用すると機能しません。しかしmod rewriteを使って別のドメインにリダイレクトすると 'RewriteRule ^/info /(.*)$ http:// someotherhost/info/$ 1 [R]'が動作します。 – mandrake

関連する問題