У меня два виртуальных хоста на одном IP, www.example.com и www.example2.com. По умолчанию example.com имеет поддомен docs.example.com, который работает нормально, а также сертификат SSL и принудительно устанавливает https на example.com.
Когда я пытаюсь настроить поддомен во втором домене, то есть blog.example2.com (wordpress), он перенаправляется обратно на первый домен, https://www.example.com. Хотя www.example2.com работает нормально.
Возможно ли иметь поддомены для двух сайтов на одном IP? Или у вас могут быть только поддомены по умолчанию? Есть ли способ заставить работать поддомен на example2?
Файлы конфигурации:
000-default.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
...
DocumentRoot /var/www/example.com/public_html
</VirtualHost>
example.com.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
...
DocumentRoot /var/www/example.com/public_html
</VirtualHost>
<IfModule mod_ssl.c>
... certificates set up etc.
</IfModule>
docs.example.com.conf
<VirtualHost *:80>
ServerName docs.example.com
...
DocumentRoot /var/www/docs.example.com/public_html
</VirtualHost>
example2.com.conf
<VirtualHost *:80>
ServerName www.example2.com
ServerAlias example2.com
...
DocumentRoot /var/www/example2.com/public_html
</VirtualHost>
blog.example2.com.conf
<VirtualHost *:80>
ServerName blog.example2.com <-- redirects back to https://www.example.com
...
DocumentRoot /var/www/blog.example2.com/public_html
</VirtualHost>
Чтобы ответить на ваши непосредственные вопросы:
да, вы можете иметь несколько поддоменов и доменов верхнего уровня на одном IP. Ваши vhosts, как было опубликовано, выглядят правильно настроенными.
Я подозреваю, что перенаправление происходит либо из-за того, что apache не видит / не загружает файл vhost blog.example2.com, либо из-за проблемы конфигурации Wordpress:
Apache пропустит загрузку любых недопустимых файлов vhost и вернется к домену, определенному в 000-default.conf. Если вы используете Apache2, вам может потребоваться проверить папку / etc / apache2 / sites-enabled, чтобы убедиться, что blog.example2.com.conf включен и загружается. Кроме того, не забудьте перезапустить Apache, если вы изменили или добавили файл vhost.
Первоначально настроенный сайт Wordpress отражает домен example.com. Wordpress сохраняет абсолютные URL-адреса для своих GUID в таблице wp_posts, а для домена сайта (url) и URL-адреса домашней страницы в таблице wp_options своей базы данных. Возможно, вам потребуется выполнить поиск и замену, чтобы обновить домен в базе данных. Это можно сделать напрямую через SQL-запрос или с помощью инструмента WP-CLI. Оба метода есть в ответах на https://wordpress.stackexchange.com/questions/7693/what-sql-query-to-do-a-simple-find-and-replace
Иногда разработчики могут переопределить и установить домен верхнего уровня (URL-адрес сайта) и URL-адрес домашней страницы в wp-config.php. Эти две настройки будут напоминать:
определить ('WP_HOME', 'http://www.example.com'); определить ('WP_SITEURL', 'http://www.example.com');
В файле .htaccess сайта Wordpress есть правило перенаправления, указывающее на www.example.com.
И последнее замечание: убедитесь, что ваш виртуальный хост для сайта / поддомена Wordpress поддерживает .htaccess. Должен быть блок, похожий на:
<Directory "/var/www/blog.example2.com/public_html">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>