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

Apache通配符包含指令是递归的吗?,apache,directive,Apache,Directive,根据Apache手册,当使用目录路径时,Include指令是递归的。但是当使用通配符路径时,它是递归的吗 Include "/usr/local/apache/conf/userdata/std/2/username/domain.com/*.conf" 我检查了它,它不是递归的。应该使用目录,而不是使用通配符 它早在1.3版本就得到了支持 Apache1.3.13中的新增功能是,如果Include指向一个目录而不是一个文件,Apache将读取该目录中的所有文件以及任何子目录,并将其作为配置

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

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

我检查了它,它不是递归的。

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

它早在1.3版本就得到了支持

Apache1.3.13中的新增功能是,如果Include指向一个目录而不是一个文件,Apache将读取该目录中的所有文件以及任何子目录,并将其作为配置文件进行解析


正如Joyce已经说过的,我可以通过自己测试来确认它不是递归的。
Include
使用
fnmatch
作为通配符引擎,默认情况下不匹配斜杠,除非设置了
FNM\u路径名
标志,因此
*
/
不匹配,因此
domain.com/*.conf
将不会在子目录中查找

但是,因为也可以对子目录使用通配符

例子 这只匹配一个特定的文件

Include /usr/local/apache2/conf.d
Include /usr/local/apache2/conf.d
如果
conf.d
是一个文件,则它仅与此文件匹配。如果
conf.d
是一个目录,则所有文件都将递归匹配,包括子目录中的文件和非conf文件(这会导致错误)

这将只匹配后缀为
.conf
的文件,后缀直接位于
conf.d
目录中。子目录中的文件不匹配

Include /usr/local/apache2/conf.d/*/*.conf
这将只匹配后缀为
.conf
的文件,该后缀直接位于
conf.d
目录的子目录中,但不匹配直接位于
conf.d
目录中的文件

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

Include /usr/local/apache2/conf.d/*.conf
Include /usr/local/apache2/conf.d/*/*.conf
Include /usr/local/apache2/conf.d/*/*/*.conf
如果您在
conf.d
中只有有效的配置文件,并且希望匹配每个级别的子目录,那么您可以使用:

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