forzar todos los dominios https con www

7

Probé 12 soluciones diferentes en este foro y ninguna de ellas funcionará. Quiero que todos mis dominios tengan https: // www .

Ahora estoy usando esto:

 RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI}

Pero ahora, cuando voy a www.example.com, redirige a https://www.www.example.com (dos veces www.)

http://example.com funciona perfectamente, redirige a https://www.example.com

10

Ese es un comportamiento normal.
En realidad, deberá verificar si wwwestá en el host o no antes de realizar una redirección.

Una forma fácil sería dividir el problema en dos condiciones.

RewriteEngine on

# redirect http://www.example.com to https://www.example.com
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# redirect http(s)://example.com to https://www.example.com
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
5
  • @JustinIurman falta la redirección de HTTPS example.com a HTTPS www.example.com, ¿no?
    Tom
    21/02/2016 a las 17:10
  • 1
    @Tom Tienes razón. Actualicé el código para encargarme de eso. Solo necesita eliminar la verificación https para la segunda regla 22/02/2016 a las 19:13
  • @ficuscr: yo también, ¿tienes alguna solución? 23/0317 a las 12:42
  • @ShashankSaxena Diría que a partir de 2.4 esto es obsoleto. Mejor ver directivas Redirecty FallbackResource. También vale la pena echarle un vistazo a HTTP Strict Transport Security.
    ficuscr
    23/0317 a las 18:29
  • Esto no es obsoleto en 2.4 (prueba aquí: httpd.apache.org/docs/current/mod/mod_rewrite.html ). Tal vez su marco (si lo hay) está configurado para forzar http o dominio sin www, lo que explicaría el ciclo. Eche un vistazo al tráfico de la red para ver qué está sucediendo allí. Sin embargo, he visto que, en algunos servidores, el uso HTTPSno funciona (no sé exactamente por qué) y el uso de una alternativa funciona. 4/11/19 a las 10:39
0

Puede utilizar la siguiente regla para redirigir a https: // www

 RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.%1%{REQUEST_URI} [L,R]
1
  • @vazzilly hubo un error tipográfico leve (falta% antes de {REQUEST_URI}). Lo he solucionado. 21 feb 2016 a las 16:00