Использую Ubuntu 18.04
У меня есть основной сайт www.example.com
, все файлы размещены в /var/www/html/
и все работает как ожидалось. Теперь я хочу сделать новый сайт в поддомене www.blog.example.com
.
Я создал новую dns запись для поддомена на моем хосте и подтвердил, что она работает, когда я пингую www.blog.example.com
, я вижу правильный IP адрес сервера.
Моя структура каталогов выглядит следующим образом;
/var/www/html
(содержит все файлы для www.example.com)/var/www/blog.example.com
(содержит единственный файл index.html для тестирования)У меня есть виртуальные хосты для каждого домена, содержимое ниже;
/etc/apache2/sites-available/example. com.conf
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html/rascal.ac.uk>
AllowOverride all
Order allow,deny
allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include conf-available/serve-cgi-bin.conf
</VirtualHost>
/etc/apache2/sites-available/blog.example.com.conf
<VirtualHost *:80>
ServerName blog.example.com
DocumentRoot /var/www/blog.example.com
<Directory /var/www/blog.example.com/>
AllowOverride all
Order allow,deny
allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Есть также /etc/apache2/sites-available/000-default.conf
выглядит так;
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Все сайты включены и я перезагружал/перезапускал apache несколько раз.
Когда я посещаю www.example.com
, я вижу свой основной сайт, как и ожидалось. При посещении www.blog.example.com
я также вижу свой основной сайт, я должен видеть содержимое моего index.html
файла.
Если я отключу 000-default.conf
, то обе ссылки отображают содержимое blog.example.com
, может ли проблема быть в этом файле?
У вас есть
ServerName blog.example.com
но это другое название, чем www.blog.example.com. Поэтому Apache не использует этот VirtualHost. Вместо этого он возвращается к VirtualHost по умолчанию. Добавление
ServerAlias www.blog.example.com
должно исправить это. See ServerAlias.
Конечно, это примеры имен. Если это не поможет, пожалуйста, отредактируйте свой вопрос, чтобы показать реальные имена хостов.