Prueba esta regla:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
He aquí una explicación:
- Las primeras pruebas de condición si el campo de encabezado HTTP anfitrión tiene el formato requerido (contiene exactamente un período).
- La condición segundas pruebas si el valor concatenado del valor de la variable HTTPS (valores
on
y off
) y s
(así que o ons
o offs
) es igual a ons
y captura la s
. Esto significa que si %{HTTPS}s
se evalúa como ons
, el primer grupo coincidente es s
y, en caso contrario, está vacío.
- La regla coincidirá con todas las solicitudes ya que cada cadena tiene un inicio (marcado con
^
) y las redirige 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 está vacío, de lo contrario), %{HTTP_HOST}
es el host HTTP de la solicitud y %{REQUEST_URI}
es la ruta URL absoluta que se solicitó.
¿Puede explicarme esto también? Es algo chino para mí ... la primera línea es para capturar solo un host de dos partes (como: example.com). ¿Qué hace la segunda línea y cómo? –
Se ve bien, pero está produciendo 500 mensaje de error interno para mí. – TRiG
@TRiG: consulte el registro de errores del servidor. – Gumbo