同じサーバーにたくさんのプロジェクトがあります。このサーバーは、SVN リポジトリと実際の Web プロジェクトの両方をホストしています。私はこの構造を持ちたいです:
project1.server.com - with doc root to /var/www/html/project1/public
project2.server.com - with doc root to /var/www/html/project2/public
project3.server.com - with doc root to /var/www/html/project3/public
そして、この URL ですべての SVN リポジトリにアクセスできるようにします
svn.server.com/project1 - with repo root at /var/www/svn/project1/
svn.server.com/project2 - with repo root at /var/www/svn/project2/
svn.server.com/project3 - with repo root at /var/www/svn/project3/
私の現在の構成は次のとおりです。
<VirtualHost *:80>
ServerName project1.server.com
DocumentRoot "/var/www/html/project1/public"
RewriteEngine off
<Location />
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php
</Location>
</VirtualHost>
# ... similar <VirtualHost> tags here for the other web subdomains
<VirtualHost *:80>
ServerName svn.server.com
<Location />
Deny from all
</Location>
<Location /project1>
Allow from all
AuthType Basic
AuthUserFile /etc/svn-auth-conf
Require valid-user
DAV svn
SVNPath /var/www/svn/project1
AuthName "Project 1 - Development Repository"
AuthzSVNAccessFile /etc/svn-acl-conf
</Location>
# ... similar <Location> tags for the other repos
</VirtualHost>
DocumentRoots を /var/www/html/project1-site/public のような別のものに変更すると、これはうまく機能するので、何が起こっているのかはかなり確信しています:
また、Web ルートにリポジトリ URL と同じ名前のオブジェクトがある可能性もあります。たとえば、Web サーバーのドキュメント ルートが /var/www で、Subversion リポジトリが /home/svn/repo にあるとします。次に、 http://server.com/myrepoでリポジトリを提供するように Apache を構成します。その後、ディレクトリ /var/www/myrepo/ を作成すると、301 エラーが発生します。
しかし、上で示したようなディレクトリ構造を維持したいと思います。それを機能させるにはどうすればよいですか?思いつくよりきちんとした構造なので、このようにしたいです。なのでアイデアも大募集!