阿帕奇将一个位置列入白名单,但需要对其他所有内容进行基本身份validation

我相信这很简单,但Google今天早上不是我的朋友。

目标是:

/ public …是公开访问的

其他一切(包括/)都需要基本的身份validation。

这是一个WSGI应用程序,只有一个WSGI脚本(这是一个Django站点,如果这很重要..)

我有这个:

<Location /public> Order deny,allow Allow from all </Location> <Directory /> AuthType Basic AuthName "My Test Server" AuthUserFile /path/to/.htpasswd Require valid-user </Directory> 

有了这个configuration,基本的身份validation工作正常,但Location指令完全被忽略。 我并不感到惊讶,因为根据这个 (请参阅如何合并章节), Directory指令首先被处理。

我确定我错过了一些东西,但由于Directory适用于文件系统的位置,我真的只有一个Directory/ ,它是一个Location ,我希望允许访问,但Directory总是覆盖Location

编辑

我正在使用Apache 2.2,它不支持AuthType None

对于Apache 2.2(也可能是2.3以上版本的其他系列):

 <Location /public> Satisfy any Allow from all </Location> <Location /> AuthType Basic AuthName "My Test Server" AuthUserFile /path/to/.htpasswd Require valid-user </Location> 

对于Apache 2.0,请在<Location /public>节中设置AuthType None

 <Location /public> AuthType None Order deny,allow Allow from all </Location> 

http://httpd.apache.org/docs/trunk/mod/mod_authn_core.html#AuthType