web-dev-qa-db-ja.com

基本認証を使用するApache2:認証から1つの場所を除外する(奇妙な動作)

Directory /に基本認証を設定していて、Location/assets/uploadを除外したいのですが、機能しません。いくつかのオプションとチュートリアルを試しました。

このLocationディレクティブは、Directory auth configをクリアし、Webサイト全体の基本認証を無効にします

<Directory "/">
    AuthType Basic
    AuthName "Staging"
    AuthUserFile /var/.../.htpasswd
    AuthGroupFile /dev/null
    Require valid-user
</Directory>

<Location "/">
    Order deny,allow
    Allow from all
    Satisfy any
</Location>

ただし、/ assets/uploadに基本認証を含めないようにしたいだけですが、Locationの最初のパラメーターを/ assets/uploadに変更すると、ページ全体(/ assets/uploadを含む)は基本認証で保護 .. ..

<Location "/assets/upload">
    Order deny,allow
    Allow from all
    Satisfy any
</Location>

ここで何が間違っている可能性がありますか?

バージョン:Apache/2.2.16(Debian)

1
mplattner

ここで、Apacheのいくつかの概念を誤解しているようです。 <Directory>ブロックの引数は、サーバールートからの相対パスではなく、完全なファイルシステムパスです。 決して実際には<Directory />ブロックをデフォルトから変更する必要があります。構成を機能させるために変更する必要はありません。

<Location>ブロックへの引数は、サーバールートを基準にしています。したがって、必要なものを実現するには、これらのブロックのうち2つが必要です。

 <Location "/assets/upload">
Orderdeny、allow 
 Allow from all 
 Satisfy any 
 </ Location> 
 
 <Location "/">
AuthTypeBasic 
 AuthName" Staging "
 AuthUserFile/var/.../.htpasswd
AuthGroupFile /dev/null
有効なユーザーが必要
 </ Location> 

グローバル/サーバーコンテキストに(つまり、仮想ホスト内にない)単一の<Directory />ブロックが必要であり、次のようになります。

 <Directory />
オプションFollowSymLinks 
 AllowOverride None 
 Order allow、deny 
 Deny from all 
 </ Directory> 
3
Unbeliever

/ assets/uploadディレクトリに、これらの内容を含む別の.htaccessファイルを配置します。

Allow from all
Satisfy any

これにより、その上のディレクトリにあるファイルのより一般的な設定が上書きされ、承認を必要とせずにアセットが提供されます。

2
Stephan