Я установил SSL на поддомене своего сайта. Все работает отлично, кроме этого странного поведения.
Если я укажу в браузере следующие места, эти корни документов будут обслуживаться:
http://domain.com -> /var/www [GOOD]
https://sub.domain.com -> /media/sub [GOOD]
https://domain.com -> /media/sub [BAD]
Последний URL в этом списке должен служить /var/www
не /media/sub
. Другими словами, я хотел бы безопасно перенаправлять пользователей с https://domain.com
к http://domain.com
.
Вот мои VirtualHosts.
domain.com
<VirtualHost *:80>
ServerName domain.com
DocumentRoot /var/www
</VirtualHost>
sub.domain.com
<VirtualHost *:443>
ServerName sub.domain.com:443
DocumentRoot /media/sub
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
Что я пробовал
Мне было предложено https://domain.com
обслуживает неправильный VirtualHost, потому что нет *:443
VirtualHost с ServerName
из domain.com
.
Чтобы исправить это, я попытался сделать следующее:
domain.com
<VirtualHost *:80>
ServerName domain.com
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:443>
ServerName domain.com
Redirect / http://domain.com/
</VirtualHost>
Я чувствую это должен работай. (Он должен перенаправить https
запросы к http
, таким образом обслуживая правильный корень документа.)
Однако когда я это сделаю, Apache2 даже не запустится. Это дает мне эту ошибку:
[error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)
Заранее большое спасибо за любые рекомендации.
Это не будет работать. SSL не работает. Чтобы включить SSL, у вас должен быть SSLEngine On и директивы для сертификата сервера и ключа.
Просто прослушивание 443 не поможет.
Если вы не планируете использовать SSL на своем domain.com, то в идеале вам не следует пытаться получить к нему доступ через HTTPS. Есть ли допустимый вариант использования, почему ваши пользователи будут пытаться получить доступ к domain.com через https?