我正在尝试允许公众访问为我们的 API 生成 WSDL 文件的方法。网站的其余部分都受到基本身份验证保护。你们能看看以下虚拟主机配置并看看为什么覆盖没有发生吗?
<VirtualHost *:80>
ServerName xyz.mydomain.com
DocumentRoot /var/www/dev/public
<Directory /var/www/dev/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
SetEnv APPLICATION_ENV testing
</Directory>
<Location />
AuthName "XYZ Development Server"
AuthType Basic
AuthUserFile /etc/apache2/xyz.passwd
Require valid-user
</Location>
<Location /api/soap/wsdl>
Satisfy Any
allow from all
</Location>
</VirtualHost>
答案1
Location(和 LocationMatch)指令可以使用正则表达式。为什么不使用正则表达式进行 Location 匹配呢?不是匹配您托管的 API 页面。例如:
<LocationMatch "(?!/api/soap/wsdl)">
AuthName "XYZ Development Server"
AuthType Basic
AuthUserFile /etc/apache2/xyz.passwd
Require valid-user
</LocationMatch>
答案2
我相信你需要:
Satisfy any
allow from all
在目录块而不是位置块中,以供考虑。