Eu acredito que você precisa:
Satisfy any
allow from all
em um bloco de diretório, em vez de um bloco de localização para que ele seja considerado.
Estou tentando permitir o acesso público a um método que gera um arquivo WSDL para nossa API. O resto do site está por trás da proteção básica de autenticação. Vocês podem dar uma olhada na seguinte configuração de host virtual e ver por que a substituição não ocorre?
<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>
Eu acredito que você precisa:
Satisfy any
allow from all
em um bloco de diretório, em vez de um bloco de localização para que ele seja considerado.
A diretiva Location (e LocationMatch) pode usar Expressão Regular. Por que não usar uma correspondência de local com uma regex para não corresponder à página da API que você está hospedando. Por exemplo:
<LocationMatch "(?!/api/soap/wsdl)">
AuthName "XYZ Development Server"
AuthType Basic
AuthUserFile /etc/apache2/xyz.passwd
Require valid-user
</LocationMatch>