Назад | Перейти на главную страницу

Динамические виртуальные хосты в Apache

Мой файл httpd-vhosts.conf выглядит так:

<VirtualHost *:80>
DocumentRoot "/www/foo/htdocs"
ServerName foo
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/www/bar/htdocs"
ServerName bar
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/www/baz/htdocs"
ServerName baz
</VirtualHost>

Заметили узор? Есть ли способ сократить дублирование, или я застрял с отдельной записью VirtualHost для каждого сайта?

Я предлагаю вам взглянуть на веб-сайт Apache для динамических виртуальных хостов. Другие методы требуют перезапуска сервера Apache.

http://httpd.apache.org/docs/2.0/vhosts/mass.html

Я понял, как это сделать, прочитав ответ Темного ниндзя. Вот как теперь выглядит мой файл httpd-vhosts.conf.

# Dynamic virtual hosts.
# See http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html
UseCanonicalName Off
VirtualDocumentRoot /www/%0/htdocs/

Мне также пришлось включить mod_vhost_alias, раскомментировав эту строку в httpd.conf

LoadModule vhost_alias_module modules/mod_vhost_alias.so

Есть два очень разных ответа.

  1. Воспользуйтесь уловкой «поддомен как папка учетной записи».
  2. Напишите короткий сценарий и файл конфигурации, которые вместе динамически генерируют ваши файлы httpd-vhosts.conf. Тогда скрипт и конфигурация станут вашими хозяевами, а файлы .conf станут «расходным материалом».

Я рекомендую №2, и думаю, прагматичные программисты тоже могут.