Вот мой код (я закомментировал часть if-else, так как она не работает)
фрагменты / содержимое моих файлов конфигурации
/etc/httpd/conf.d/staff.vhost
Define host_domain "staff"
Include /etc/httpd/conf.d/stage_template.vhost
/etc/httpd/conf.d/stage_template.vhost
#<If "${host_domain} == 'main'">
# ServerAlias stage.myhost.com
#</If>
#<Else>
ServerAlias stage-${host_domain}.myhost.com
#</Else>
$ {host_domain} может иметь 3 возможных значения: main, staff или customer.
Я пробовал эти сравнения
"$ {host_domain} == 'main'"
AH00526: Синтаксическая ошибка в строке 9 /etc/httpd/conf.d/stage_template.vhost: Невозможно проанализировать условие условия: синтаксическая ошибка, неожиданный T_OP_STR_EQ, ожидается '('
"% {host_domain} == 'main'"
AH00526: Синтаксическая ошибка в строке 9 /etc/httpd/conf.d/stage_template.vhost: Невозможно проанализировать условие условия: ошибка синтаксического анализа рядом с '%'
"'$ {host_domain}' == 'main'"
AH00526: синтаксическая ошибка в строке 10 /etc/httpd/conf.d/available_vhosts/stage_template.vhost: здесь не разрешены ServerAlias
Я использовал это страница как руководство. Но у него нет примеров использования пользовательских переменных.
Спасибо!
Apache's Если еще операторы оцениваются во время запроса, а Сопоставление виртуального хоста есть своя логика. Вот почему вполне вероятно, что If-Else не будет работать с ServerAlias
вообще, иначе это дало бы неожиданные результаты. С другой стороны, вы заявляете, что ваш "${host_domain}
может иметь 3 возможных значения ". То, что вы пытаетесь сделать, слишком сложно, и у вас есть несколько подходов получше.
<VirtualHost>
для каждого основной, штат сотрудников и клиент.<VirtualHost>
где каждый вариант соответствует одному ServerAlias
. Затем вы можете использовать операторы If-Else внутри <VirtualHost>
для изменения конкретной конфигурации на основе %{HTTP_HOST}
переменная. <VirtualHost>
s (намного больше, чем три) с некоторыми изменяющимися частями в конфигурации, модуль Apache mod_macro был бы ваш выбор. Поскольку макросы оцениваются при запуске сервера, создавая из них статическую конфигурацию, это более эффективно, чем сравнение переменных во время запроса.