根据Apache手册,当使用目录路径时,Include指令是递归的。但是在使用通配符路径时它是递归的吗?
Include "/usr/local/apache/conf/userdata/std/2/username/domain.com/*.conf"
答案 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将读取该目录中的所有文件以及任何子目录,并将其解析为配置文件。