我试图让公众访问一个方法,为我们的API生成一个WSDL文件。 该网站的其余部分是基本身份validation保护。 你们可以看看下面的虚拟主机configuration,看看为什么覆盖不会发生?
<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>
我相信你需要:
Satisfy any allow from all
在一个目录块而不是一个位置块来考虑它。
Location(和LocationMatch)指令可以使用正则expression式。 为什么不使用正则expression式的位置匹配来匹配您所托pipe的API页面。 例如:
<LocationMatch "(?!/api/soap/wsdl)"> AuthName "XYZ Development Server" AuthType Basic AuthUserFile /etc/apache2/xyz.passwd Require valid-user </LocationMatch>