Я пытаюсь отредактировать файл конфигурации, чтобы он работал одновременно на Apache 2.2 и Apache 2.4.
Файл изначально был написан для Apache 2.2 и включает следующую конфигурацию:
RewriteLogLevel 3
RewriteLog /var/log/httpd/apache_rewrite_log
Однако RewriteLogLevel
больше не поддерживается в Apache 2.4. Вместо этого в этой ситуации мне нужно использовать:
LogLevel alert rewrite:trace6
По сути, то, что я хотел бы сделать, это:
<IfDirective LogLevel>
LogLevel alert rewrite:trace6
</IfDirective>
<IfDirective RewriteLog>
RewriteLogLevel 3
RewriteLog /var/log/httpd/apache_rewrite_log
</IfDirective>
Однако IfDirective
, похоже, не используется в Apache.
Мне неизвестен метод проверки существования конкретной директивы. (Вы можете проверить наличие целых модулей, используя
, но RewriteLog
/ RewriteLogLevel
является частью mod_rewrite в Apache 2.2 и LogLevel
является частью ядра в Apache 2.4, поэтому, к сожалению, это нам не помогает.)
Однако,мы можем проверить версию Apache с помощью
и соответственно обработать директивы.
Например, LogLevel
доступен с версии 2.3.6 и более поздних:
<IfVersion >= 2.3.6>
LogLevel alert rewrite:trace6
</IfVersion>
<IfVersion !>= 2.3.6>
RewriteLogLevel 3
RewriteLog /var/log/httpd/apache_rewrite_log
</IfVersion>
]!
во второй директиве просто меняет значение на противоположное. Вместо этого это можно было бы записать как
.