Назад | Перейти на главную страницу

Apache обслуживает неправильный корень документа

Я установил 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?