【问题标题】:Apache Basic Authentication using FilesMatch within DirectoryMatch在 DirectoryMatch 中使用 FilesMatch 的 Apache 基本身份验证
【发布时间】: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)。
  • 抱歉,我从错误的地方复制/粘贴 - 实际上我确实没有注释该行(现在已在我的代码中修复)

标签: .htaccess apache2


【解决方案1】:
<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>

我发现了问题所在。对不起,我一开始没有注意:)。 Probelm 是 DirectoryMatchDirectory 完全一样,但它需要正则表达式作为参数。因此,当您的文档根目录为 /var/www/somedomain.com/httpdocs 时,uploads 目录应如下所示

<DirectoryMatch "^/var/www/somedomain.com/httpdocs/uploads/(dir1|dir2)">
      #Somemthibg goes here :-D
 </DirectoryMatch>

【讨论】:

  • 噢!很近。感谢您的回答
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 2016-02-08
  • 2012-02-04
相关资源
最近更新 更多