所有子域上的 htpasswd 并防止通过不同的身份验证 ip 进行身份验证

htpasswd on all subdomains and prevent auth by different auth ip's

我希望所有带有 *.domainname.com 的子域都得到了 httpasswd 保护,但是 2 个 ips 允许在没有凭据的情况下进行身份验证。

<Directory /home/www/clients>
            AuthUserFile /home/www/.htpasswd
            AuthName "Acceso Privado"
            AuthType Basic
            Require valid-user
            SetEnvIf Host domainname.com secure_content
            Order Allow,Deny
            Allow from all
            Deny from env=secure_content
            Allow from XX.XX.XX.XX
            Allow from XX.XX.XX.XX
            Satisfy Any
</Directory>

但是在 /home/www/clients 中托管的所有域都要求我提供凭据:(

<VirtualHost *:80>
        ServerAdmin root@domainname.com
        ServerName trademark.domainname.com
        ServerAlias www.trademark.domainname.com

        DocumentRoot /home/www/clients/trademark/htdocs/

        <Directory /home/www/clients/trademark/htdocs>
                Options none FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/trademark/trademark_error.log

        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/trademark/trademark_access.log combined
</VirtualHost>

我找到了适用于大于或等于 2.4 的 apache 版本的解决方案

<Directory /home/www/clients>
    <If "%{REMOTE_ADDR} != 'XX.XX.XX.XX'  && %{REMOTE_ADDR} != 'XX.XX.XX.XX' && %{HTTP_HOST} -strcmatch '*.domainname.com'">
        AuthUserFile /home/www/.htpasswd
        AuthName "Acceso Privado"
        AuthType Basic
        Require valid-user
    </If>
</Directory>