如果我设置了一个不再在我们的任何虚拟主机中使用的配置选项,httpd.conf
它是否对每个虚拟主机都有效,或者每个虚拟主机都需要设置该选项?
具体来说,我想设置RewriteLog
andRewriteLogLevel
选项。可悲的是,我们的虚拟主机配置比理智的要多得多,因此在每个文件中设置此选项并在需要部署它时进行验证会很麻烦(不要让我开始配置管理)。所以,如果我设置它httpd.conf
并确保它不在任何虚拟主机配置中,它会适用于每个虚拟主机吗?
如果我设置了一个不再在我们的任何虚拟主机中使用的配置选项,httpd.conf
它是否对每个虚拟主机都有效,或者每个虚拟主机都需要设置该选项?
具体来说,我想设置RewriteLog
andRewriteLogLevel
选项。可悲的是,我们的虚拟主机配置比理智的要多得多,因此在每个文件中设置此选项并在需要部署它时进行验证会很麻烦(不要让我开始配置管理)。所以,如果我设置它httpd.conf
并确保它不在任何虚拟主机配置中,它会适用于每个虚拟主机吗?
根据 Apache doumentation,配置部分按以下顺序合并:
<Directory>
(除了正则表达式)和 .htaccess 同时完成(使用 .htaccess,如果允许,覆盖<Directory>
)<DirectoryMatch>
(和<Directory "~">
)<Files>
并<FilesMatch>
同时完成<Location>
并<LocationMatch>
同时完成<If>
例如,将按照 A > B > C > D > E 的顺序应用以下内容:
更多信息可以在文档中找到:https ://httpd.apache.org/docs/2.4/sections.html
编辑:
<Directory>
,<DirectoryMatch>
,<Files>
,<FilesMatch>
,<Location>
,<LocationMatch>
之类的指令<VirtualHost>
只是限制了它们所包含的指令的范围,因此将<IfModule>
指令应用于文件的全局区域将全局应用它。如果您尝试覆盖
mod_rewrite
,您可以考虑利用RewriteOptions
设置为 的指令InheritDown
。这将导致所有子配置从父范围继承设置,相当于放入RewriteOptions Inherit
每个子范围。将此全局放置会将您的日志记录选项应用于每个子范围。