Я заметил, что у некоторых хостинг-провайдеров есть настройка Apache, поэтому, если я создам каталог (foo.example.com), Apache автоматически узнает, что запись DNS для foo.example.com направляется в корень этого документа.
Что мне нужно сделать, так это настроить что-то вроде этого:
<VirtualHost *:80>
ServerName *.example.com
DocumentRoot /home/user/*.example.com
</VirtualHost>
Где DocumentRoot будет соответствовать на основе шаблона из подстановочного знака ServerName.
Для этого все, что мне нужно сделать, это создать /home/user/foo.example.com
после того, как конфигурация готова и не нужно ничего изменять в Apache. Это позволило бы мне добавлять поддомены на лету без необходимости перезапуска, перезагрузки или даже редактирования чего-либо в Apache.
Пример использования будет примерно таким.
mkdir /home/user/baz.example.com/
Где мне бы ничего не нужно было делать, а просто создать каталог.
VirtualDocumentRoot
должен сделать свое дело.
<VirtualHost *:80>
ServerName catchall.invalid
ServerAlias *
VirtualDocumentRoot /home/user/%0
</VirtualHost>
Последняя веб-компания, с которой я работал, делала нечто подобное, вместо того, чтобы жестко кодировать ее в конфигурации apache, мы хотели сохранить конфигурацию в базе данных, чтобы мы могли обновлять ее в любое время, когда мы захотим, и она будет корректироваться, когда нам нужно.
http://blog.straylightrun.net/2009/07/31/storing-apache-virtual-hosts-in-a-database/
это сообщение в блоге, которое мы использовали для этого.
http://code.google.com/p/dbd-modules/wiki/mod_vhost_dbd
mod vhost dbd wiki, хорошая информация о хранении ваших конфигураций vhost в базе данных.
Думаю, у меня недостаточно кармы, чтобы добавить комментарий, поэтому добавлю ответ. Ответ Стива Мэддена правильный.
Если вы хотите создать домен разработки на своем локальном компьютере (например, mycomputer.dev), вы можете использовать VirtualDocumentRoot
трюк вместе с запуском локального DNS-сервера для этого. Затем, когда вы захотите создать новый веб-сайт, просто создайте каталог. Ни редактирования Apache, ни редактирования файлов hosts, ни перезапуска Apache.
Это сообщение в блоге содержит инструкции для * nix:
http://blog.sznapka.pl/dynamic-lamp-setup-for-localhost-development/
И инструкция по Windows:
http://blog.straylightrun.net/2010/05/10/throw-away-your-hosts-file-developing-locally-with-bind/
Если вы «только» хотите делать то, что вы выразили в последнем разделе вашего вопроса, просто сделайте это так:
<VirtualHost *:80>
ServerName *.example.com
DocumentRoot /home/user/foo.example.com
</VirtualHost>
И вы настроены.