Недавно мне потребовалось сделать два сайта на одном IP и пришлось разбираться как это сделать. Для примера есть у нас два сайта с доменными именами example.com и old.example.com. Apache нам позволяет разделать сайты по IP и по DNS имена, а так же комбинировано. Перейдем к настройке :
<VirtualHost *:80>
Этой опции мы задаем ip адрес и порт сайта. То есть, если бы у нас были разные ip проблем не было бы. Пишем ip и радуемся жизни. * значит VirtualHost слушает все доступные ip.
ServerName example.com
Вот это уже интересней . Имя сервера, сюда мы пишем именно DNS имя хоста. Вот тут то и есть решение нашей проблемы. Вводя имя сайта в браузере мы спрашиваем именно этот сайт и обращаясь по ip сайта браузер сообщает еще и его имя серверу Apache. Как раз указанное в этой опции.
ServerAlias www.example.com
Альтернативные имена хоста, используемое при сопоставлении запросов имен-виртуальных хостов. Собственно тут можно указать альтернативное имя хоста.
Конечно не забудьте создать папку для нового сайта и выставить права на файлы и папку.
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot «/www/example»
</VirtualHost>
<VirtualHost *:80>
ServerName old.example.com
ServerAlias www.old.example.com
DocumentRoot «/www/old.example»
</VirtualHost>
<VirtualHost *:80>
ServerName local
DocumentRoot «/www/local»
</VirtualHost>
Вот собственно получилось у нас три сайта на одном IP, причем если кто то ведет просто ip сервера то попадет на сайт local.
Статья — г-но. Тут не указано, где именно записывать конфиг. Вообще, абстракция какя-то условная.