Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 在DirectoryMatch中使用FileMatch的Apache基本身份验证_.htaccess_Apache2 - Fatal编程技术网

.htaccess 在DirectoryMatch中使用FileMatch的Apache基本身份验证

.htaccess 在DirectoryMatch中使用FileMatch的Apache基本身份验证,.htaccess,apache2,.htaccess,Apache2,我想限制对某些特定PDF文件的访问,但我的Apache配置有点问题。我使用FilesMatch指令的工作方式如下: <FilesMatch "\.pdf$"> AuthName "Permission Required" AuthUserFile /path/to/.htpasswd" Require valid-user AuthType Basic </FilesMatch> AuthName“需要权限” AuthUserFile/path

我想限制对某些特定PDF文件的访问,但我的Apache配置有点问题。我使用FilesMatch指令的工作方式如下:

<FilesMatch "\.pdf$">
   AuthName "Permission Required"
   AuthUserFile /path/to/.htpasswd"
   Require valid-user
   AuthType Basic
</FilesMatch>

AuthName“需要权限”
AuthUserFile/path/to/.htpasswd”
需要有效用户
AuthType Basic
现在我明白了,我不能只在.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>

DocumentRoot“/var/www/somedomain.com/httpdocs”
ServerName somedomain.com:80
服务器别名somedomain.com
AuthName“需要权限”
AuthUserFile“/var/www/somedomain.com/bin/.htpasswd”
需要有效用户
AuthType Basic
实际文件位于:


我确信它很简单,但我就是不能让它正常工作。

你打开了
FilesMatch
,但没有关闭它(这适用于
DirectoryMatch
)。对不起,我从错误的位置复制/粘贴了-我确实没有对这行进行注释(现在已在我的代码中修复)Doh!太近了。谢谢你的回答
<VirtualHost *:80>
   DocumentRoot "/var/www/somedomain.com/httpdocs"
   ServerName somedomain.com:80
   ServerAlias somedomain.com
   <DirectoryMatch "^/var/www/somedomain.com/httpdocs/uploads/(dir1|dir2)">
      <FilesMatch "\.pdf$">
         AuthName "Permission Required"
         AuthUserFile "/var/www/somedomain.com/bin/.htpasswd"
         Require valid-user
         AuthType Basic
      </FilesMatch>
   </DirectoryMatch>
</VirtualHost>
<DirectoryMatch "^/var/www/somedomain.com/httpdocs/uploads/(dir1|dir2)">
      #Somemthibg goes here :-D
 </DirectoryMatch>