Apache 2 Fedora 中的“IfModule...”有什么用?

Apache 2 Fedora 中的“IfModule...”有什么用?
#<IfModule mod_headers.c>
    Header unset Pragma
    FileETag None
    Header unset ETag
    ExpiresActive On
    <FilesMatch "\\.(ico|jpg..)$">
        etc
    </FilesMatch>
#</IfModule>

#<ifmodule mod_php4.c>
    php_value zlib.output_compression 16386
#</ifmodule>

各位朋友,我可以评论那些 IfModule 内容吗,因为在接下来的几年里我都不打算做出改变,而且我绝不愿意用 IIS 或宇宙中的任何其他东西来改变 Apache。

换句话说:那些 ifModule 东西的实际用途是什么?非常感谢您就此主题提供启发性的建议或答案。

答案1

这些是条件加载。如果加载了特定的 Apache 模块,则允许该配置块生效。如果未加载模块,则不会执行它们。

答案2

请注意,Apache 配置文件中行首的“#”表示注释。仅当给定模块已加载时才执行语句的实际语法很简单:

<IfModule ...>
    statements to execute...
</IfModule>

如果您复制注释掉开始和结束条件语句的语句块,则注释内的行将始终被执行。在这种情况下,如果模块确实已加载(或者语句不依赖于模块),您将看不到任何错误。但使用条件语句的目的是避免其他情况下的错误。

相关内容