Mise à jour 2016
Comme cette réponse reçoit une certaine attention, je veux faire allusion à une façon plus recommandée de procéder en utilisant les hôtes virtuels : Apache : Redirection SSL
<VirtualHost *:80>
ServerName mysite.example.com
Redirect permanent / https://mysite.example.com/
</VirtualHost>
<VirtualHost _default_:443>
ServerName mysite.example.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>
Vieille réponse, truc bidule si votre port ssl n'est pas défini sur 80, cela fonctionnera :
RewriteEngine on
# force ssl
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Notez que ceci devrait être votre première règle de réécriture.
Editar: Ce code fait ce qui suit. Le RewriteCond(ition) vérifie si le ServerPort de la requête est 80 (qui est le port http par défaut, si vous spécifiez un autre port, vous devrez adapter la condition à celui-ci). Si c'est le cas, nous faisons correspondre l'url entière (.*)
et le redirige vers une url https. %{SERVER_NAME}
peut être remplacé par une url spécifique, mais de cette façon, vous ne devez pas modifier le code pour d'autres projets. %{REQUEST_URI}
est la partie de l'URL après le TLD (top-level-domain). Vous serez donc redirigé vers l'endroit d'où vous venez, mais en https.