Apache DirectoryMatch应用于一个子文件夹,但不适用于另一个子文件夹

时间:2017-11-09 14:43:30

标签: regex apache

我正在尝试为子文件夹应用一些规则,但不为其他子文件夹应用。

我有这个

SetEnvIf Referer "((.+\.)?domain\.com|localhost)" localreferer
<DirectoryMatch "/bin(.+/)?">
   Require env localreferer
</DirectoryMatch>

它工作正常。但是现在我需要这个规则不适用于/ bin / public。我将/ bin / private和/ bin / public,我需要应用/ bin / private

的规则

我试过

SetEnvIf Referer "((.+\.)?domain\.com|localhost)" localreferer
 <DirectoryMatch "/bin/private(.+/)?">
    Require env localreferer
 </DirectoryMatch>

但所有bin的子文件夹都允许来自所有引用者。

允许/ bin / public从任何referer和/ bin / private访问的正确的正则表达式只有我列表中的那些

提前致谢

1 个答案:

答案 0 :(得分:1)

我找到了问题和解决方案。我需要使用LocationMatch而不是DirectoryMatch,所以

SetEnvIf Referer "((.+\.)?domain\.com|localhost)" localreferer 
<LocationMatch "/bin(.+/)?"> 
      Require env localreferer
 </LocationMatch> 

<LocationMatch "/bin/public(.+/)?"> 
      Require all granted 
</LocationMatch>