我需要用htpasswd来保护一些位置,并且可以正常工作 :
<Location /myloc> AuthType Basic AuthName "My Protected Area" AuthUserFile .htpasswd Require valid-user </Location>
但我需要以某种方式绕过Auth例如url / myloc / loc1而不是/ myloc / loc2。 原因是我想能够得到例如loc1和做一些数据库search。 例如:
"select Status From table where url=/myloc/requested_loc" (loc1 or loc2 or any name) if Status == 1 return 1 else return 0
所以情景如下:
一些想法:1.我想修改https://github.com/winlibs/apache/blob/master/2.4.x/modules/aaa/mod_auth_basic.c,但我不知道这是一个好主意(我是肯定这是可怕的想法)。
在那里我的想法结束了。
我不是在寻找解决scheme,只是在追求这个方向的几个想法。
解决scheme和更新
我很愚蠢我根本不会在/ myloc上进行身份validation。 我将对dynamic创build的文件loc1.conf,loc2.conf等进行Authvalidation,然后将其包含在Apache虚拟主机configuration中。
<VirtualHost *:80> domain ...... Include /path/loc1.conf Include /path/loc2.conf .... </VirtualHost>
@HBruijn给了我这个想法。
您需要调查Apache如何合并指令和设置优先级 。
<Location>部分按照它们在configuration文件中出现的顺序进行处理,所以类似下面的内容应允许未经授权/未经身份validation的访问者访问/ myloc / loc1 /:
<VirtualHost *:80> ServerName example.org DocumentRoot /var/www/ <Location /myloc/loc1/> Order allow,deny Allow from all </Location> <Location /myloc/> AuthType Basic AuthName "My Protected Area" AuthUserFile .htpasswd Require valid-user </Location> </VirtalHost>
从Apache 2.3可以使用授权容器来expression更复杂的授权逻辑。