Я сделал нечто очень похожее для пары небольших сайтов, принадлежащих одной и той же компании (одна компания, два объекта, каждый со своим сайтом). Оба находятся на виртуальном хостинге, но вы должны быть в состоянии сделать то же самое с VirtualHosts - просто определите два VirtualHosts, каждый с отдельным именем домена, но каждый указывает на один и тот же корень документа в файловой системе:
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /srv/www/public_html
</VirtualHost>
<VirtualHost *:80>
ServerName site2.com
DocumentRoot /srv/www/public_html
</VirtualHost>
У меня есть index.php
в каталоге public_html
. Это проверяет $_SERVER['HTTP_HOST']
, чтобы определить используемое доменное имя. Затем он устанавливает несколько констант с соответствующими местоположениями каталогов и флагом сайта, который используется при доступе к базе данных.
У меня есть три каталога для статического содержимого. Один из них является общим контентом, который используется для обоих доменов, а два других являются специфичными для сайта и включают такие вещи, как логотипы.
Остальные сценарии PHP хранятся вне корня документа в отдельном каталоге сценариев. При необходимости сценарии могут использовать константы, определенные в index.php
, для таких вещей, как абсолютные URL-адреса или другая информация, специфичная для сайта.
/srv/www/
|
|--public_html
| |
| |--site1
| | |
| | |--css
| | |--images
| |
| |--site2
| | |
| | |--css
| | |--images
| |
| |--shared
| |
| |--css
| |--images
|
|--scripts
Если вам нужны два отдельных корня документа, просто создайте два отдельных файла index.php
, по одному для каждого. Затем они оба могут вызывать одну и ту же общую кодовую базу (в моем случае это /srv/www/scripts/
). Примерно так:
/srv/www/
|
|--site1
| |
| |--public_html
| |
| |--css
| |--images
|
|--site2
| |
| |--public_html
| |
| |--css
| |--images
|
|--scripts
А потом:
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /srv/www/site1/public_html
</VirtualHost>
<VirtualHost *:80>
ServerName site2.com
DocumentRoot /srv/www/site2/public_html
</VirtualHost>