Да, у вас может быть несколько VirtualHosts на локальном компьютере - это точно так же, как при работе на удаленном сервере, за исключением того, что IP-адрес и доменное имя не совпадают.
Что я обычно делаю:
Редактировать файл hosts
Чтобы добавить новые доменные имена, которые я хочу обслуживать с моего локального компьютера.
Например, я бы добавил:
127.0.0.1 tests
127.0.0.1 blog
И так далее, с одной строкой для каждого доменного имени, которое я хочу.
Добавление новых VirtualHosts в конфигурацию Apache
Затем я добавляю новые VirtualHosts в конфигурацию Apache.
Первый сайт: тесты
Например, для моего tests
доменного имени я бы использовал:
<VirtualHost *:80>
ServerName tests
DocumentRoot /home/squale/developpement/tests
<Directory /home/squale/developpement/tests>
AllowOverride All
Options Indexes FollowSymLinks MultiViews
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
</VirtualHost>
Здесь отметим пару вещей:
-
VirtualHost
включен *:80
- Итак, он будет слушать любой адрес
- Сопоставление имени домена производится директивой
ServerName
Конечно, до вас, чтобы убедиться, что этот VirtualHost виден Apache - либо поместив его конфигурацию в загруженный файл (не рекомендуется), либо:
- Размещение этой конфигурации в новом файле в
/etc/apache2/sites-available/
- Использование
a2ensite
для включения сайта
- Который создаст символическую ссылку в
/etc/apache2/sites-enabled/
, указывающую на ваш новый файл конфигурации.
Второй сайт: блог
А вот конфигурацию, которую я бы использовал для второго имени домена, которое соответствует blog
:
<VirtualHost *:80>
ServerName blog
DocumentRoot /home/squale/developpement/blog.pascal-martin.fr/www
<Directory /home/squale/developpement/blog.pascal-martin.fr/www>
AllowOverride All
Options Indexes FollowSymLinks MultiViews
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
</VirtualHost>
Это в основном одно и то же; только два отличия:
- Директива
ServerName
соответствует моему второму доменному имени - конечно,
- И
DocumentRoot
не то же самое
Другие файлы?
На самом деле я ничего не изменяю на конфигурацию Apache по умолчанию (я в Ubuntu, если это важно) .
Например, я ничего не изменяю в файле ports.conf
: у меня все еще есть директивы NameVirtualHost
и Listen
по умолчанию:
NameVirtualHost *:80
Listen 80
Единственными важными изменениями, которые я делаю, является включение некоторых модулей, таких как перезапись, срок действия, ... Но это не сильно связано с вашей проблемой VirtualHosts; -)
Результаты?
Если я открою свой браузер и зайду на http://tests/
, я получу то, что ожидаю от моего tests
домена - список каталогов и файлов здесь.
И если я открою свой браузер и зайду на http://blog/
, я получу экземпляр разработки моего блога - ну и страницу с ошибкой, сообщающую, что я забыл настроить базу данных ^^