【发布时间】:2012-03-28 13:55:22
【问题描述】:
我想限制对某些特定 PDF 文件的访问,但我的 Apache 配置有点问题。我的 FilesMatch 指令按如下方式工作:
<FilesMatch "\.pdf$">
AuthName "Permission Required"
AuthUserFile /path/to/.htpasswd"
Require valid-user
AuthType Basic
</FilesMatch>
现在我知道我不能只在我的 .htaccess 文件中更具体,所以我必须在我的配置文件中使用 LocationMatch 或 DirectoryMatch。我尝试了以下方法,但没有成功:
<VirtualHost *:80>
DocumentRoot "/var/www/somedomain.com/httpdocs"
ServerName somedomain.com:80
ServerAlias somedomain.com
<DirectoryMatch "^/uploads/(dir1|dir2)">
<FilesMatch "\.pdf$">
AuthName "Permission Required"
AuthUserFile "/var/www/somedomain.com/bin/.htpasswd"
Require valid-user
AuthType Basic
</FilesMatch>
</DirectoryMatch>
</VirtualHost>
实际文件位于:http://www.somedomain.com/uploads/dir1/somefile.pdf
我确信这很简单,但我就是无法让它正常工作。
【问题讨论】:
-
您打开了
FilesMatch并没有关闭它(这适用于DirectoryMatch)。 -
抱歉,我从错误的地方复制/粘贴 - 实际上我确实没有注释该行(现在已在我的代码中修复)