, поэтому у меня проблема с виртуальными хостами Apache 2 (2.4.38). Я успешно настроил два из них: один для моего фактического домена (например, example.com) и один для поддомена (blog.example.com). Затем я попытался создать новый для еще одного поддомена (назовем его sub.example.com), но по какой-то причине это всегда перенаправляет на первый поддомен, т.е. е. blog.example.com.
У меня есть файл .conf
для каждого из моих поддоменов в моем каталоге / etc / apache2 / sites-available
, все они были включены с помощью a2ensite
] и default.conf
был отключен с помощью a2disconf
. Я также установил соответствующие записи A.
Я видел, как несколько разных людей говорили, что добавление NameVirtualHost
решит эту проблему, но, похоже, это устарело и не работает.
Мои файлы .conf
выглядят следующим образом, где example.com
- это мой фактический домен:
<VirtualHost *:80>
ServerAdmin info@example.com
ServerName blog.example.com
DocumentRoot /var/www/blog.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =blog.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Конфигурация другого моего поддомена выглядит точно так же, но с DocumentRoot
, ServerName
и RewriteCond
изменены, чтобы отразить его другое местоположение и имя.
Перезапуск самого сервера или Apache2 (и ожидание в течение нескольких дней, если установка записи A заняла некоторое время), похоже, тоже ничего не помогло.
Ничего из того, что я искал в Интернете, похоже, не сработало. та же проблема, что и у меня; Я нашел несколько, но они сказали, что это можно смягчить с помощью директивы
, которая в моем случае ничего не сделала.
К сожалению, я все еще новичок в Apache2, поэтому я был бы признателен, если бы кто-нибудь здесь знал, как заставить это работать правильно.
Заранее спасибо!
С уважением, Marvin
В качестве альтернативного предложения - на самом деле вам не нужна отдельная конфигурация перенаправления для каждого домена - вы можете использовать подстановочный знак. Это виртуальный хост, который мы определили для этого:
<VirtualHost *:80>
# This acts as a catchall for subdomains being accessed on HTTP
# it forces a redirect to HTTPS.
ServerName vhbootstraphttps.example.com
ServerAlias *.example.com
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
Примечание: для подстановочного символа вам необходимо использовать ServerAlias