我相信这很简单,但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