Apache AH01797何时禁用HTTP Auth用于某些文件但不用于某些路径

时间:2016-06-24 11:42:45

标签: apache .htaccess http-authentication

我有一个Apache 2.4 VirtualHost,其访问受AuthType Basic

的限制
<VirtualHost ...>
    DocumentRoot /var/www/www.example.com/public
    <Directory /var/www/www.example.com/public>
        AuthType Basic
        AuthBasicProvider ldap
        AuthLDAPURL "ldap://ldap.example.com/dc=example,dc=com?uid?sub"
        AuthLDAPBindDN "user"
        AuthLDAPBindPassword "secret"
        AuthLDAPGroupAttribute memberUid
        AuthLDAPGroupAttributeIsDN off
    </Directory>
</VirtualHost>

使用.htaccess中的/var/www/www.example.com/public文件,我可以取消保护图片和其他资源:

# Allow assets without HTTP Auth
<FilesMatch "\.(gif|jpe?g|png|css|js|ico)$">
    Satisfy Any
    Allow from all
</FilesMatch>

此设置有效:限制访问网站,不限制直接链接到资产。

现在我希望一些非常具体的图片保持其访问限制:比如任何名为foobar-.*\.jpg的文件。

我尝试将以下内容添加到我的.htaccess文件中:

# But do not allow theses JPG images
<FilesMatch "foobar-.*\.jpg$">
    Require valid-user
    Order allow,deny
    Satisfy Any
</FilesMatch>

这似乎有效:

/var/www/www.example.com/public/imgs/foo/foobar-baz.jpg文件存在且在用户登录HTTP的浏览器上http://www.example.com/imgs/foo/foobar-baz.jpg正确显示(否则他们会获得 401 Unauthorized )。

使用cURL命令:

curl --user foobar:secret -D - -o /dev/null -s http://www.example.com/imgs/foo/foobar-baz.jpg

我的Apache error.log文件中出现以下错误:

  

[Fri Jun 24 13:36:41.989506 2016] [access_compat:error] [pid 26834] [client 1.2.3.4:35251] AH01797:客户端被服务器配置拒绝:/var/www/www.example.com/公共/ IMGS /富/ foobar的-baz.jpg

access.log包含:

  

1.2.3.4 - foobar [24 / Jun / 2016:13:36:41 +0200]&#34; GET /imgs/foo/foobar-baz.jpg HTTP / 1.0&#34; 200 24652&#34; - &#34; &#34;卷曲/ 7.35.0&#34;

由于部署问题,我希望在.htaccess文件中保留访问配置。

0 个答案:

没有答案