Apache通配符Include指令是递归的吗?

时间:2013-04-17 05:38:09

标签: apache directive

根据Apache手册,当使用目录路径时,Include指令是递归的。但是在使用通配符路径时它是递归的吗?

 Include "/usr/local/apache/conf/userdata/std/2/username/domain.com/*.conf"

3 个答案:

答案 0 :(得分:3)

我检查过它并不是递归的。

答案 1 :(得分:1)

正如乔伊斯已经说过的,我可以自己进行测试来确认它不是递归的。 Interface1使用Interface2作为通配符引擎,默认情况下不匹配斜杠,除非设置了Interfaces标志,所以myFun()不匹配{{1 }},因此Interface1不会在子目录中查找。

但是,由于httpd 2.3.6,也可以将通配符用于子目录。

示例

Interface2

这仅匹配特定文件。

justAFunction([1,2,3,4,5,6,7,8]);   
 function justAFunction(originalArr){
      let copyArr = originalArr;
      copyArr.pop();
      copyArr.pop();
      copyArr.pop();
    
    
      
      console.log(originalArr);
    
      }
    output = [ 1, 2, 3, 4, 5 ]

如果Include是文件,则仅匹配此文件。如果fnmatch是目录,则将递归匹配所有文件,包括子目录中的文件和非conf文件(这会导致错误)。

FNM_PATHNAME

这只会匹配后缀为*的文件,这些文件直接位于/目录中。子目录中的文件不匹配。

domain.com/*.conf

这只会匹配后缀为Include /usr/local/apache2/conf.d/ssl.conf 的文件,这些文件直接位于Include /usr/local/apache2/conf.d 目录的子目录中,而不会匹配直接位于conf.d目录的文件。

例如,如果您需要匹配直接位于conf.d以及第一级子目录和第二级子目录中的所有Include /usr/local/apache2/conf.d/*.conf 文件,则可以使用以下方法:

.conf

如果conf.d中只有有效的配置文件,并且想匹配每个级别的子目录,则可以使用:

Include /usr/local/apache2/conf.d/*/*.conf

答案 2 :(得分:0)

应该使用目录,而不是使用通配符。

早在1.3 https://httpd.apache.org/docs/1.3/mod/core.html#include

以来就一直受支持。
  

Apache 1.3.13中的新增功能是如果Include指向目录而非文件,则Apache将读取该目录中的所有文件以及任何子目录,并将其解析为配置文件。