Apache-2.2

編寫一個apache配置,條件基於apache版本

  • December 15, 2015

我想為 apache 伺服器編寫一個配置,它應該適用於 apache-2.2 和 -2.4 而無需更改。由於 v2.4 中有相當多的新模組需要載入,以及一些更改的指令,我需要一些條件語句。我想要的是類似的東西

<If ApacheVersion >= 2.4>
 LoadModule mod_only_in_2.4.so
</If>

但我還沒有找到合適的表達方式。有人可以指出我正確的方向嗎?

澄清我的動機:我正在開發一個伺服器,我希望能夠將它複製到伺服器上並在沒有進一步依賴主機的配置的情況下執行。而且由於機器可以有任何一個版本的 apache,我想要一個在這兩種情況下都有效的配置。

您應該檢查模組,而不是 Apache 版本。

例如:

<IfModule mod_authz_core.c>
Require all granted
</IfModule>

<IfModule !mod_authz_core.c>
Order deny,allow
Allow from all
</IfModule>

請注意,您無法提前猜測某人是否擁有特定的 Apache 版本;由系統管理員確保正在載入正確的模組。作為開發人員,您真正需要擔心的是您提供了正確的指令,具體取決於可用的模組。

作為系統管理員,您必須為 Apache 2.2 和 2.4 維護不同的配置;沒有辦法解決這個問題。幸運的是,每個配置管理系統都使這變得相對容易,如果您還沒有使用這樣的系統,那麼您應該使用。

如果mod_version已載入,預設情況下應該在 Apache 2.2 和 2.4 中都可用(儘管預設情況下不載入),您可以使用該<IfVersion>指令檢查 Apache 的(並且僅 Apache 的)版本:

<IfVersion >= 2.3>
   # this happens only in versions greater or
   # equal 2.3.0.
</IfVersion>

範例取自文件。

引用自:https://serverfault.com/questions/576755