web-dev-qa-db-ja.com

SVNサーバー(Apache 2.2)の「/.well-known」ディレクトリへのアクセスを許可する方法

.well-knownディレクトリの認証を無効にする方法がわかりません。

SVN固有のディレクティブ(DAV、SVNPath、AuthzSVNAccessFile)を削除すると、期待どおりに動作します。

<VirtualHost *:443>
  ServerName www.example.com
  DocumentRoot "C:/www.example.com"
  ServerAdmin [email protected]

  SSLEngine On
  SSLCertificateFile "C:/Apache2/conf/ssl/www.example.com.crt"
  SSLCertificateKeyFile "C:/Apache2/conf/ssl/www.example.com.key"

  <Location />
    DAV svn
    SVNPath "C:/svnrepo"
    SSLRequireSSL 

    AuthName "www.example.com"
    AuthType Basic
    AuthUserFile "conf/svn/svn-users.txt"
    AuthGroupFile "conf/svn/svn-groups.txt"
    AuthzSVNAccessFile "conf/svn/svn-access.txt"

    Require valid-user
  </Location> 

  <Location "/.well-known">    
    Satisfy Any
    Allow from all
    Require all granted
    # Apache 2.4 only
    #AuthType None
  </Location>
</VirtualHost>

編集:パスが重複していない場合にも機能します。例えば。 /svnおよび/.well-knownを使用します。残念ながら、これは簡単に変更できるものではありません。

3
Reto Höhener

ウェブルートで、次の内容のファイル.htaccessを作成します。

Options +Indexes

<IfModule mod_rewrite.c>
    RewriteRule "/\.|^\.(?!well-known/)" - [F]
</IfModule>

これを機能させるには、ModRewriteを有効にする必要があります。

2
Stephan Richter

Apache Directoryオプションを確認できます。以下は設定例です:

    <Directory /home/html/.well-known/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
2
Amit Vujic

ただお知らせ:私は最終的に弾丸を噛み、私のsvn repoへのパスを https://svn.domain.com/repo に変更することにしました(ルートを使用する代わりに)。

さまざまなシステムやフレームワークでの多くの複雑化の後、私はほとんどすべてのホストされたアプリケーションに対してこのパターンに従うこと、つまり常に使用することにしました

  • サブドメイン
  • アプリケーションコンテキストパス

例えば https://subdomain.domain.com/context

これにより、将来、負荷分散、同じドメインの下の複数のアプリケーション、同じサーバー上の複数のアプリケーションなどを導入するためのすべてのオプションが開かれます。また、重複するパスがないため、構成は通常機能します。

もちろん、すべてのクライアントでsvn repoパスを切り替えるのは大変でした。

1
Reto Höhener