mod_rewrite con redirect externo y reescritura interna

Estoy tratando de usar mod_rewrite para redireccionar ciertas páginas para usar SSL. Para eso tengo:

<code>RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} !^/login(\.php)?$ [NC]
RewriteCond %{REQUEST_URI} !^/contact-us(\.php)?$ [NC]
RewriteCond %{REQUEST_URI} !^/\..*$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} !^dev\.example\.com$ [NC]
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_URI} ^/login(\.php)?$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/contact-us(\.php)?$ [NC]
RewriteRule ^(.+)\.php$ https://www.example.com/$1 [R=301,L]
</code>

Esto funciona bien, y hace exactamente lo que quiero que haga.

Más tarde en mi .htacess tengo un:

<code>RewriteRule ^members/(.+)/change-password$ members/.change-password.php?item=$1 [NC,QSA,L]
</code>

Así que si aparece una URL como, por ejemplo:

<code>http://www.example.com/members/foo-bar/change-password
</code>

Internamente se procesaría como:

<code>/members/.change-password.php?item=foo-bar
</code>

Una vez más, esto funciona bien y está haciendo lo que yo quiero también.

Lo que ahora debo hacer es incluir esto en mi lógica de redireccionamiento SSL original para garantizar que cualquier solicitud de cambio de contraseña se redirija a la misma URL pero a través de https. He intentado:

<code>RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} !^/login(\.php)?$ [NC]
RewriteCond %{REQUEST_URI} !^/contact-us(\.php)?$ [NC]
RewriteCond %{REQUEST_URI} !^/\..*$
RewriteCond %{REQUEST_URI} !^/members/.+/change-password [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} !^dev\.example\.com$ [NC]
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_URI} ^/login(\.php)?$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/contact-us(\.php)?$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/members/.+/change-password [NC]
RewriteRule ^(.+)\.php$ https://www.example.com/$1 [R=301,L]
</code>

Pero esto no funciona, acabo de recibir la página a través de http. Cambiando el.+ a.* Parece que me pone en un bucle de redireccionamiento permanente.

Supongo que esto se debe a la reescritura interna, pero no importa lo que intente, parece que no puedo resolverlo.

¿Alguien puede por favor aconsejar?

Gracias,

Adam M.

Respuestas a la pregunta(1)

Su respuesta a la pregunta