login保护根,但允许所有在subdir? (Apache)的

我目前有一个设置,其中根login(密码)保护,但我需要打开一个特定的子目录给公众。 我似乎无法完成这一点,无论我尝试哪些组合的命令。 目前,我的设置( /etc/apache2/sites-available/000-default.conf )是:

 # access settings <Location /> AuthType Basic AuthName "Password Protected Area" AuthUserFile /var/www/.htpasswd Require valid-user </Location> <Location /var/www/html/some_dir> AllowOverride All Require all granted Satisfy Any Allow from all </Location> 

注意:每次更改后,我都重新启动了apache。

版本:

  • Ubuntu 14.04.3 LTS
  • Apache 2.4.7

你的Apache版本是2.4.7,但是你的configuration好像来自Apache 2.2。 请参阅运行时configuration更改 :

访问控制

在2.2中,基于客户端主机名,IP地址和客户端请求的其他特征的访问控制是通过OrderAllowDenySatisfy指令完成的。

在2.4中,这种访问控制与其他授权检查相同,使用新模块mod_authz_host 。 旧的访问控制成语应该被新的authentication机制所取代。

此外, Location指令通过URL限制所附指令的范围,而Directory指令用于文件系统位置,如/var/www/html/some_dir

mod_authn_core AuthType文档有一个相同情况的教科书示例,其解释如下:

authenticationtypesNone禁用authentication。 启用身份validation时,通常由每个后续configuration部分inheritance,除非指定了不同的身份validationtypes。 如果authentication部分的子部分不需要authentication,则可以使用authenticationtypesNone ; 在以下示例中,客户端可以在不进行身份validation的情况下访问/www/docs/public目录:

 <Directory "/www/docs"> AuthType Basic AuthName Documents AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" Require valid-user </Directory> <Directory "/www/docs/public"> AuthType None Require all granted </Directory> 

还有其他一些相关的问题,比如这里 ,但是他们的解决scheme对我来说不起作用。 通过试验和错误(包括设置的顺序),我发现了一些设置,为我做了伎俩:

 <Directory /var/www/html/some_dir> AuthType None AllowOverride All Require all granted Satisfy Any </Directory> 

注意从LocationDirectory的变化。 不知道这是否意义重大。