htaccess redirige para http que no sea www y https

Me gustaría tener:

  • http://example.com redirija a: http://www.example.com
  • https://example.com redirigir a: https://www.example.com

Y todo lo que sea http://whatever.example.com NO incluya el www como http://www.whatever.example.com .

Pruebe esta regla:

 RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Aquí hay una explicación:

  1. La primera condición prueba si el campo de encabezado HTTP Host tiene el formato requerido (contiene exactamente un período).
  2. La segunda condición prueba si el valor concatenado del valor de la variable HTTPS (valores off y off ) y s (por lo tanto, ons o offs ) es igual a ons y captura el s . Esto significa que %{HTTPS}s evalúa como ons , de lo contrario, el primer grupo coincidente es s y está vacío.
  3. La regla coincidirá con todas las solicitudes ya que cada cadena tiene un inicio (marcado con ^ ) y las redirecciona al valor evaluado de http%1://www.%{HTTP_HOST}%{REQUEST_URI} si ambas condiciones son verdaderas. Donde %1 es el primer grupo coincidente de la condición anterior ( s si HTTPS y vacío en caso contrario), %{HTTP_HOST} es el host HTTP de la solicitud y %{REQUEST_URI} es la ruta URL absoluta que se solicitó.

Intente agregar este RewriteCond a su archivo .htaccess para capturar solo SSL, luego haga lo mismo con el http estándar.

 RewriteCond %{HTTPS} on