У меня есть большой файл httpd.conf, большинство из которых - виртуальные хосты. Есть ли способ создать файл, скажем virtual_hosts.conf, и включить его из httpd.conf? Я немного погуглил, но, похоже, не нашел много включений, просто загрузка модуля.
Информацию о файлах apache httpd.conf можно найти по адресу Вот.
Некоторые фрагменты были скопированы с этого веб-сайта, чтобы гарантировать, что информация не будет потеряна, если ссылка станет устаревшей:
Include /usr/local/apache2/conf/ssl.conf
Include /usr/local/apache2/conf/vhosts/*.conf
Относительные пути:
Include conf/ssl.conf
Include conf/vhosts/*.conf
Подстановочные знаки:
Include conf/vhosts/*/*.conf
Я разделяю каждый виртуальный хост на отдельный файл конфигурации vhost, чтобы вам не пришлось искать в гигантском документе одну маленькую директиву. Подобно сообщению Quanta:
Include /etc/apache2/vhosts.d/*.conf
Просто поместите его в последнюю строку в httpd.conf
затем просто разделите ваш единственный vhosts.conf на отдельные файлы для каждого домена, т.е.
domain1.conf
domain2.conf
domain3.conf
etc....
намного проще в управлении. -шон
Вы можете сделать это с Включают директива:
Include /path/to/virtual_hosts.conf
ВключитьДополнительно
Также вы можете использовать ВключитьДополнительно директива
IncludeOptional conf/vhosts/*.conf
Так что в таком случае подходящего файла быть не может. Или, как точно сказано в документации,
Он работает аналогично директиве Include, но будет игнорироваться (вместо того, чтобы вызывать ошибку), если используются подстановочные знаки, и они не соответствуют какому-либо файлу или каталогу, или если путь к файлу не существует в файловой системе.
НО!
Обратите внимание, что некоторые версии Apache действительно не запускается в случаях, когда «путь к файлу не существует в файловой системе». Как в примере выше, если нет каталога conf/vhosts/
.
Таким образом, в такой проблеме вы можете быть ограничены в безопасном использовании этой директивы, не используя некоторые подкаталоги, если вы не уверены, существуют ли они.
Вроде такой:
<VirtualHost *:80>
DocumentRoot "/var/www/example.com"
ServerName "example.com"
ServerAlias "www.example.com" "example.com"
...
IncludeOptional /var/www/example.com/*.httpd.conf
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/other.org"
ServerName "other.org"
ServerAlias "www.other.org" "other.org"
...
IncludeOptional /var/www/other.org/*.httpd.conf
</VirtualHost>
Когда некоторым нравится
IncludeOptional /var/www/other.org/*.httpd.conf
воля хорошо работает (есть ли у вас файл, соответствующий заданной маске или нет), но
IncludeOptional /var/www/other.org/config_optional_subdir/*.conf
не удастся если такого подкаталога нет config_optional_subdir
.
Обратите внимание, что
IncludeOptional /var/www/other.org/extra.httpd.conf
не удастся тоже, если хотя бы на одном из сайтов не будет именно указанный файл extra.httpd.conf
. Подстановочные знаки - это ключ.
Итак, если обычная конфигурация сайта создан и может быть воссоздан автоматически некоторыми шаблон, но для некоторых конкретных сайтов требуется дополнительная конфигурация apache, которую нельзя записать только в файл .htaccess - вы можете использовать этот подход.