Таким образом, я создал очень простой сайт, содержащий только index.html с текстом 'приветствие'. виртуальный хост этого сайта следующие:
ServerAdmin email@email.com
ServerName name.com
ServerAlias www.name.com
DocumentRoot /var/www/name.com/public_html
Это работает просто великолепно. Затем я делаю другой сайт, которым я хочу быть www1.name.com
с текстом www1
.
Я делаю practicly то же, я делаю папку /var/www1/name.com/public_html
с index.html
в нем я копирую предыдущий файл и изменяю его
ServerAlias www1.name.com
DocumentRoot /var/www1/name.com/public_html
но при движении в www1.name.com, я получаю текст 'Прием' и не 'www1'. Кто-либо может помочь мне с этим?
И да я всегда делаю a2ensite/a2dissite
и service apache2 restart
Принятие VirtualHost
теги прекрасны. Это, вероятно, потому что ServerAlias
не используется, если существует нет ServerName
существующий. Попробуйте его снова после изменения ServerAlias
кому: ServerName
в Вашу секунду VirtualHost
.
Хорошее напоминание состоит в том, чтобы установить ServerName
для имени и использования ServerAlias
для любых дополнительных псевдонимов.
Действительно отметьте хотя, если Вы собираетесь использовать другой каталог (за пределами/var/www), что полномочия установлены правильно. Также, если SELinux
используется, соответствующий контекст должен быть установлен для того каталога. Но это - правильно не проблема, если Вы не включаете SELinux
самостоятельно.
Разъяснение немногих основных пунктов:
В рамках Ubuntu, /var/www
каталог по умолчанию, где веб-контент пользователя должен быть сохранен. Это определяется в конфигурационный файл глобального Apache: /etc/apache2/apache2.conf
, согласно директивам:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Нет никакой прямой ссылки между названием VirtualHost и DocumentRoot
имя каталога.
Директива ServerName
определяет название общего сервера или название определенного VirtualHost, когда это помещается в его определение - между <VirtualHost>
теги.
В целях эффективного управления VHS, обычно, определение каждого отдельного VirtualHost помещается в отдельный конфигурационный файл.
Директива ServerName
требуется для каждого VirtualHost.
Директива ServerAlias
не требуется. Мы можем думать об этом как место, где мы можем ввести один или несколько синонимов ServerName
.
Согласно этим точкам, мое предложение является следующим:
Создайте два отдельных каталога, расположенные в /var/www
, как пример от вопроса они могли быть:
sudo mkdir -p /var/www/www.name.com/public_html
sudo mkdir -p /var/www/www1.name.com/public_html
Создайте конфигурационный файл для первого VirtualHost:
sudo nano /etc/apache2/sites-available/www.name.com.conf
Его содержание должно быть чем-то как:
<VirtualHost *:80>
ServerName www.name.com
ServerAlias name.com
ServerAdmin email@email.com
DocumentRoot /var/www/www.name.com/public_html
<Directory /var/www/www.name.com/public_html>
Options None FollowSymLinks
# Enable .htaccess Overrides:
AllowOverride All
DirectoryIndex index.html index.php
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Создайте конфигурационный файл для второго VirtualHost:
sudo nano /etc/apache2/sites-available/www1.name.com.conf
Его содержание должно быть чем-то как:
<VirtualHost *:80>
ServerName www1.name.com
ServerAdmin email@email.com
DocumentRoot /var/www/www1.name.com/public_html
<Directory /var/www/www1.name.com/public_html>
Options None FollowSymLinks
# Enable .htaccess Overrides:
AllowOverride All
DirectoryIndex index.html index.php
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Отключите конфигурации всего существующего VirtualHost, если это необходимо: sudo a2dissite "*.conf"
.
Включите новые конфигурационные файлы:
sudo a2ensite www.name.com.conf www1.name.com.conf
Apache перезапуска:
Ubuntu 14.04: sudo service apache2 restart
Ubuntu 16.04: sudo systemctl restart apache2.service
Поместите некоторые страницы index.html в public_html/
папки и попытка получить доступ к этим двум доменам (http://www...
и http://www1...
) через браузер.