2015-07-08 6 views
0

У меня есть сайт, настроенный для SSL на Apache как виртуальный хост. Конфигурация SSL работает нормально и для https://www.optimise.co.id. Однако, если пользователь приходит на http://optimise.co.id я хочу, чтобы направить на https://www.optimise.co.id - в момент его остановки на https://optimise.co.id показывая недействительный сертификатRewrite & SSL на Apache

Я включил VirtualHost (что было бы, как его справедливо только для WWW.) ниже. Любая помощь очень ценится.

Благодаря

<VirtualHost *:443> 
DocumentRoot ###### 
RewriteEngine On 
ServerName www.optimise.co.id 
ServerAlias optimise.co.id 
SSLEngine On 
SSLCertificateFile /var/www/certificates/#####.crt 
SSLCertificateKeyFile /var/www/certificates/#####.key 
SSLCertificateChainFile /var/www/certificates/####.crt 
</VirtualHost> 
<VirtualHost *:80> 
DocumentRoot ###### 
RewriteEngine On 
ServerName www.optimise.co.id 
ServerAlias optimise.co.id 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
</VirtualHost> 

ответ

1

Вы должны перенаправить optimise.co.id к www.optimise.co.id в SSL ВХост, и вам не нужно mod_rewrite о неприменении SSL ВХост: см apache doc , Просто переадресуйте все, что приходит на не-SSL, на SSL VHost с www.

<VirtualHost *:443> 
    DocumentRoot ###### 
    RewriteEngine On 
    ServerName www.optimise.co.id 
    ServerAlias optimise.co.id 
    SSLEngine On 
    SSLCertificateFile /var/www/certificates/#####.crt 
    SSLCertificateKeyFile /var/www/certificates/#####.key 
    SSLCertificateChainFile /var/www/certificates/####.crt 

    # redirect everything to host to www.host : 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^optimise.co.id 
    RewriteRule (.*) https://www.optimise.co.id/$1 [R=301,L] 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName www.optimise.co.id 
    ServerAlias optimise.co.id 
    Redirect permanent/https://www.optimise.co.id/ 
</VirtualHost> 
+0

Большое спасибо. Это сработало. https://optimise.co.id по-прежнему вызывает предупреждение SSL, но это связано с тем, что сертификат SSL действителен только для www. –

+0

@GilesHunt Добро пожаловать, рад, что это помогло. Для предупреждения SSL вы попробовали предложение для VirtualHost *: 80? И есть некоторые SSL-сертификаты, которые не являются подстановочными сертификатами, но которые принимают оба домена с www и без. Возможно, попробуйте проверить это, когда вы обновите сертификат. – Zimmi

+0

Да, порт 80 отлично работает благодаря вашему примеру. –