
La idea es configurar el web server (en este caso trabajo con Apache), para que cuando accedan los usuarios a una pagina que utiliza certificado SSL, solo pongan el nombre del vhost, sin pensar en si poner http o no, es decir, pondran www.aeiou.com y los llevara a https://www.aeiou.com, si esto no esta configurado como veremos a continuacion, cuando ingresen solo www.aeiou.com los llevara a http://www.aeiou.com lo cual dara error, por que no existe ese virtual en el puerto 80.
La configuracion es asi; primero configuramos un nuevo vhost en el puerto 80, identico al que tenemos en 443 pero sin la parte de SSL:

<VirtualHost *:443>
ServerName www.aeiou.com
DocumentRoot "/opt/apache.2.2.19/htdocs/aeiou"
SSLEngine on
SSLProtocol -ALL +SSLv3 +TLSv1
SSLCipherSuite HIGH:MEDIUM:-LOW:-aNULL
SSLCertificateFile /opt/apache.2.2.19/conf/ssl.crt/www.aeiou.com.crt
SSLCertificateKeyFile /opt/apache.2.2.19/conf/ssl.key/www.aeiou.com.key
CustomLog "| /opt/apache.2.2.19/bin/rotatelogs /opt/apache.2.2.19/logs/www.aeiou.com_ssl_access_log.%Y%m%d 86400" common
ErrorLog "| /opt/apache.2.2.19/bin/rotatelogs /opt/apache.2.2.19/logs/www.aeiou.com_ssl_error_log.%Y%m%d 86400"
</VirtualHost>
<VirtualHost *:80>
ServerName www.aeiou.com
DocumentRoot "/opt/apache.2.2.19/htdocs/aeiou"
CustomLog "| /opt/apache.2.2.19/bin/rotatelogs /opt/apache.2.2.19/logs/www.aeiou.com_access_log.%Y%m%d 86400" common
ErrorLog "| /opt/apache.2.2.19/bin/rotatelogs /opt/apache.2.2.19/logs/www.aeiou.com_error_log.%Y%m%d 86400"
</VirtualHost>

Por supuesto que deberian tener mas configuraciones, pero la idea es mostrar que son identicos, solo difiere que el que este en el 80 no tendra configurado el SSL On.
Ademas de eso, en el file index.html tendremos el siguiente contenido:
[admin@server:~] more /opt/apache.2.2.19/htdocs/aeiou/index.html
<html>
<head>
<meta HTTP-EQUIV="REFRESH" delay="0" CONTENT="1;URL=https://www.aeiou.com">
<head>
<body>
</body>
</html>
[admin@server:~]
Con eso eviamos a cada persona que intenta acceder a http://aeiou.com, a la misma url pero segurizada.
Espero que sirva! Saludos!!

Otra forma de configurar:
Para .htaccess
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
En PHP
<?php
header("HTTP/1.1 301 Moved Permanently";
header("LOCATION: https://tudominio.com/";
?>
Esta forma funciona asi... tal cual... copy/paste only poner esta configuracion dentro del vhost http (es decir, dentro del que este en el puerto 80, sin configuracion ssl)
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
(Chequea si esta accediendo por puerto 443, si no es asi redirige)

