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)
ここで、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>
/ assets/uploadディレクトリに、これらの内容を含む別の.htaccessファイルを配置します。
Allow from all
Satisfy any
これにより、その上のディレクトリにあるファイルのより一般的な設定が上書きされ、承認を必要とせずにアセットが提供されます。