Учусь создавать виртуальные хосты на apache2. У меня операционная система Ubuntu 16.04. У меня также есть WSL (Ubuntu 16.04) в Windows 10.
А теперь вот что я заметил, когда создал виртуальный хост на ОС Ubuntu:
Я создал следующие VH:
#Did work
<VirtualHost *:80>
ServerName xyzvk.com
ServerAlias www.xyzvk.com
DocumentRoot /var/www/xyzvk.com
</VirtualHost>
#Didn't work
<VirtualHost *:80>
ServerName xyzvk.com
ServerAlias www.xyzvk.com
DocumentRoot /var/www/yolo
</VirtualHost>
и добавил имя и псевдоним в / etc / hosts
Когда я получил доступ к URL-адресу в браузере. Работал нормально.
Теперь, когда я изменил DocumentRoot, перезапустил сервер и попробовал снова, это просто не сработало. Он отправил меня в корневой каталог по умолчанию, т.е. / var / www / html
Использование WSL
Я проделал те же процедуры, за исключением файла hosts, который я редактировал в файле hosts в Windows, так как изменение в файле hosts в Ubuntu не помогло (возможно, потому, что это ОС Windows).
На этот раз все работало в обоих направлениях, независимо от имени каталога.
Так что мой вопрос is: Это просто соглашение о том, чтобы называть папку таким же, как имя домена (если да, то какие могут быть проблемы, что она не работает в ОС Ubuntu) ИЛИ это обязательно?
Это всего лишь соглашение, которое обычно упрощает жизнь системному администратору, поскольку делает все просто.
Вы можете ввести любой путь, который вам нравится DocumentRoot
при условии, что у Apache есть соответствующие права на доступ к ней и что остальная часть конфигурации адаптирована к этому.
Когда вы изменили свой DocumentRoot
и не имел ожидаемого поведения, вам следует изучить файлы журнала Apache, чтобы узнать, что произошло.
Это, вероятно, повторяется много раз в другом месте, но с 2.2 при определении нескольких виртуальных хостов с одним и тем же комбинированным ip: port вы должны добавить дополнительную директиву «once» и «в контексте конфигурации сервера», как это в вашем случае, чтобы иметь возможность: land "на втором виртуальном хосте:
NameVirtualhost *:80
<VirtualHost *:80>
ServerName xyzvk.com
ServerAlias www.xyzvk.com
DocumentRoot /var/www/xyzvk.com
</VirtualHost>
<VirtualHost *:80>
ServerName xyzvk.com
ServerAlias www.xyzvk.com
DocumentRoot /var/www/yolo
</VirtualHost>