Je pense que la meilleure réponse redirige avec succès non-www vers www (ex: mysite.com -> www.monsite.com ), mais ne prend pas en compte les sous-domaines génériques, ce qui entraîne:
random.mysite.com -> www.random.mysite.com
Voici une solution avec / sans HTTPS
HTTP
RewriteEngine On
RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ http%{ENV:protossl}://www.mysite.com/$1 [L,R=301]
HTTP / HTTPS
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]
RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ %{ENV:protocol}://www.mysite.com/$1 [L,R=301]
* Remarque: je n'ai pas testé https car je n'ai actuellement pas de certificat à tester, mais si quelqu'un peut vérifier ou optimiser ce que j'ai, ce serait génial.