htaccess para redirigir http: // y http: // www a https: // que funciona bien con subdominios

Estoy tratando de redirigir las siguientes condiciones:

http://mydomain.com
http://www.mydomain.com

a:

https://mydomain.com

Pero no quiero estropear nada con los subdominios, de modo que alguien que escribe:

http://m.mydomain.com

no sería redirigido a https. Mi archivo htaccess actual se ve así:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

He intentado usar algunos de los ejemplos que he encontrado aquí en el desbordamiento de pila, como este:

RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://mydomain.com/$1 [R=301,L]

Pero a pesar de que parece haber funcionado para esa persona, resultó en un "bucle de redirección" para mí. Como nota aparte, después de que funcione, necesito agregar algunos redireccionamientos para manejar subdominios, para redireccionar de manera invisible (sin cambiar la URL)http://m.mydomain.com ahttp://mydomain.com/m por ejemplo. Así que lo que se haga aquí no debería evitar que eso suceda.

Si ayuda, el sitio está alojado en Rackspace Cloud Sites.

¿Alguien sabe cómo hacer esto?

¡Gracias!

Editar

Intenté esto:

#http to https
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com [NC]
RewriteRule ^(.*)$ https://mydomain.com/$1 [L,R=301]

#subdomain 1
RewriteBase /
RewriteCond %{HTTP_HOST} ^sub1.mydomain.com [NC]
RewriteRule ^(.*)$ http://mydomain.com/sub1/$1 [R=301,L]

Parece que funciona en su mayor parte, excepto que cuando escribo en una subcarpeta no parece funcionar. Por ejemplo, si escribo esto en la barra de direcciones:

mydomain.com/temp

Se resuelve a:

http://mydomain.com/temp/

Editar 2

Bueno, he hecho algunos progresos. Hasta ahora tengo www redirigiendo a no-www, y subdominios funcionando (aunque la barra de direcciones cambia, supongo que es aceptable). Lo que parece estropearlo es si pongo algún tipo de https forzados allí. Parece que está en conflicto con el bloque www to non-www. Puedo tener uno o el otro. ¿Hay alguna manera de hacer que esas dos partes trabajen juntas?

Además, la dirección del sitio de WordPress y la dirección de WordPress están configuradas parahttps://mydomain.com

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# Redirect from www to non-www location
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com [NC]
RewriteRule ^(.*)$ https://mydomain.com/$1 [R=301,L]

# Redirect http to https
# THIS DOES NOT WORK - causes redirect loop
#RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

# subdomain
RewriteBase /
RewriteCond %{HTTP_HOST} ^sub1.mydomain.com [NC]
RewriteRule ^(.*)$ http://mydomain.com/sub1/$1 [R=301,L]

RewriteBase /
RewriteCond %{HTTP_HOST} ^sub2.mydomain.com [NC]
RewriteRule ^(.*)$ http://mydomain.com/sub2/$1 [R=301,L]

Conclusión

Para la mayoría de los hosts web, la solución de anubhava funcionaría bien. Sin embargo, la clave aquí resultó ser Rackspace, creo. Ellos tienen sus propios métodos preferidos que encontré al buscar en su base de conocimientos. Aquí está el último archivo htaccess que funciona muy bien. Todas las direcciones URL de www se envían a direcciones URL distintas de www, se envían http a https y los subdominios se redirigen a sus subdirectorios adecuados, sin desordenar WordPress:

RewriteEngine On
RewriteBase /

#subdomain 1
RewriteCond %{HTTP_HOST} ^sub1.mydomain.com [NC]
RewriteRule ^(.*)$ http://mydomain.com/sub1/$1 [R=301,L]

#subdomain 2
RewriteCond %{HTTP_HOST} ^sub2.mydomain.com [NC]
RewriteRule ^(.*)$ http://mydomain.com/sub2/$1 [R=301,L]

#get rid of www, works with rackspace cloud sites
RewriteCond %{HTTP_HOST} ^www.mydomain.com [NC]
RewriteRule ^(.*)$ https://mydomain.com/$1 [R=301,L]

#force https, works with rackspace cloud sites
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://mydomain.com/$1 [R,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Muchas gracias por toda su ayuda con esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta