2

複数のURLを介してSubversionリポジトリにアクセスできるようにしようとしています。そのために、LocationMatchディレクティブを使用することを考えていました。私の構成は次のとおりです。

<Location ~ "/(svn|repository)">
  DAV svn
  SVNPath /opt/svn
  AuthzSVNAccessFile /etc/subversion/access
</Location>

上記の構成は機能しません。奇妙なことに、たとえばこの構成を使用すると、両方のURLでうまく機能します。

<Location ~ "/(svn|repository)">
  SetHandler server-status
</Location>

私にとって、DAV svnとLocationMatchの組み合わせは実際には機能していないように見えますか、それともここで何か間違ったことをしていますか?

4

4 に答える 4

1

他のサブパスが自分の試合に巻き込まれるのを避けるために正規表現を使用したかったので、私も問題を抱えています。

例えば

<LocationMatch "^/test/.*$>

と同じではありません

<Location "/test">

後者の場合と同様に、http://site.com/newproduct/testは最後のものに捕らえられますが、最初のものには捕らえられません。http://site.com/test/scriptsもそうでしょう。これがLocationMatchが存在する理由ですが、正規表現を入力するたびに失敗します。ただし、正規表現を使用せずにLocationMatchを使用すると、機能するように見えます。

于 2011-03-01T20:50:10.247 に答える
1

Locationorセクションで正規表現を使用するLocationMatchと、Apache サーバーがリクエストの一部のメタデータを正規表現の内容で書き換えていることが問題のようです (おそらく、このリクエストを受け取るハンドラーに、通常の表現)。

dav_svn ハンドラーが要求を取得すると、このメタデータを参照して、要求されているリソースを取得するために必要なパスを解決します。正規表現は実際のパスではないため、次のようなエラーが発生します。

svn: PROPFIND of '%5E/(svn%7Crepository)/!svn/vcc/default': Could not parse response status line

dav_svnで正規表現を使用しないことを除いて、それに対する修正はありません。私の場合、XSLTフォーマッターを使用して、Webブラウザーを使用してサブバージョンリポジトリにアクセスするときに、Subversionリポジトリの優れたUIを表示したかったのですが、XSLリソースはSubversionリポジトリをホストする同じホスト名の別のパスでアクセスされるはずなので、正規表現を使用しLocationて、XSLリソースへのパスがdav_svnハンドラーにヒットしないようにしたいと考えました。これは失敗だったので、代わりに別のホスト名に websvn をデプロイしただけです。

于 2011-11-02T13:56:15.367 に答える
0

動作する高速なソリューション: 各 vhost への参照を追加するだけで、svn repro にアクセスできるようにする必要があります。

于 2013-06-20T13:03:19.440 に答える
0

クライアントはエラーを受け取りますか? HTTP エラー ログにエラーはありますか?

複数の場所を単一の SVN Repo にマップすると、SVN が混乱する場合があります。http://subversion.apache.org/faq.html#http-301-errorを参照してください。現在、別の問題についてトラブルシューティングを行っています。

正規表現を削除すると機能しますか? はいと思いますが、確認したかったのです。

<Location "/svn">
于 2010-05-04T16:55:48.183 に答える