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