覆盖 Apache 身份验证指令

覆盖 Apache 身份验证指令

我正在尝试允许公众访问为我们的 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

在目录块而不是位置块中,以供考虑。

相关内容