Хотя я знаю, что эта тема уже обсуждалась в некоторых других потоках, где объясняется, как настроить Virtualhosts в Apache. Дело в том, что после поиска возможных ответов на мою проблему здесь, исследования в Google и чтения официальной документации Apache я не могу решить свою проблему.
Во-первых, у меня была одна установка WordPress, работающая на Apache 2.4, установленная в CentOS 7, и я установил следующий Virtualhost:
<VirtualHost *:80>
ServerName subdomain1.domain.com
ServerAlias www.subdomain1.domain.com
DocumentRoot /some/path/to/wordpress
<Directory "/some/path/to/wordpress">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/subdomain1-error.log"
CustomLog "logs/subdomain1-access.log" combined
LogLevel warn
</VirtualHost>
Это сработало нормально, но затем я решил добавить установку Moodle (потому что у сервера не слишком много трафика), а затем, если я просматриваю в Chrome subdomain1.domain.com или subdomain2.domain.com, это не имеет значения, Chrome всегда переходит на subdomain2.domain.com (сайт Moodle).
Я пробовал в Chrome и Firefox с теми же результатами. Moodle Virtualhost - это:
<VirtualHost *:80>
ServerName subdomain2.domain.com
ServerAlias www.subdomain2.domain.com
DocumentRoot /some/path/to/moodle
<Directory "/some/path/to/moodle">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/subdomain2-error.log"
CustomLog "logs/subdomain2-access.log" combined
LogLevel warn
</VirtualHost>
Кроме того, файл конфигурации Apache httpd.conf включает эти VirtualHosts с помощью директивы: IncludeOptional conf.d / *. Conf
Файл /etc/hosts
является:
127.0.0.1 localhost
134.122.191.221 subdomain1.domain.com
134.122.191.221 subdomain2.domain.com
Я не вижу никаких очевидных ошибок в моих файлах конфигурации Apache Virtualhosts, поэтому я был бы признателен, если бы кто-нибудь мог дать мне подсказку о том, что это не так и о любых возможных ошибках.
Большое спасибо.
Вы пытаетесь настроить Виртуальный хост на основе имени и отсутствует важная конфигурация:
NameVirtualHost *:80
Итак, добавьте указанную выше строку в свой httpd.conf и перезапустите apache / httpd, и это должно решить проблему.
N.B. В соответствии с документация apache 2.4, эта директива устарела и больше не нужна.
До 2.3.11,
NameVirtualHost
требовалось, чтобы указать серверу, что определенная комбинация IP-адреса и порта может использоваться в качестве виртуального хоста на основе имени. В 2.3.11 и более поздних версиях каждый раз, когда комбинация IP-адреса и порта используется на нескольких виртуальных хостах, для этого адреса автоматически включается виртуальный хостинг на основе имени.
Но мне еще предстоит выяснить, почему это работает с указанной выше директивой.