2010-01-06 16 views
14

me gustaría tener:htaccess reorientar para los no-www http y https

  • http://example.com redirección a: http://www.example.com
  • https://example.com redirección a: https://www.example.com

Y todo lo que es http://whatever.example.com NO agregue el www como http://www.whatever.example.com.

Respuesta

35

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:

  1. Las primeras pruebas de condición si el campo de encabezado HTTP anfitrión tiene el formato requerido (contiene exactamente un período).
  2. 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.
  3. 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ó.
+0

¿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? –

+0

Se ve bien, pero está produciendo 500 mensaje de error interno para mí. – TRiG

+0

@TRiG: consulte el registro de errores del servidor. – Gumbo

2

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

RewriteCond %{HTTPS} on 
Cuestiones relacionadas