Para forzar primero HTTPS, debe verificar la variable de entorno correcta %{HTTPS} off
, pero su regla anterior antepone el www.
Dado que tiene una segunda regla para aplicar www.
, no la use en la primera regla.
RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Sobre la representación
Cuando está detrás de algunas formas de representación, por medio de las cuales el cliente se conecta a través de HTTPS a un proxy, equilibrador de carga, aplicación de Pasajero, etc., la %{HTTPS}
variable nunca puede estar on
y causar un ciclo de reescritura. Esto se debe a que su aplicación en realidad está recibiendo tráfico HTTP simple a pesar de que el cliente y el proxy / equilibrador de carga están utilizando HTTPS. En estos casos, verifique el X-Forwarded-Proto
encabezado en lugar de la %{HTTPS}
variable. Esta respuesta muestra el proceso apropiado.
RewriteCond %{HTTPS} =off