2011-02-06 11 views

Respuesta

222

me gustaría utilizar esta regla:

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

la condición de primer comprueba si el valorHost no está vacío (en caso de HTTP/1.0); el segundo comprueba si el valor Host no comienza con www.; el tercer cheque para HTTPS (%{HTTPS} es on o off, por lo que %{HTTPS}s es ons o offs y en el caso de coincide con el s). La parte de sustitución de RewriteRule simplemente fusiona las partes de información en una URL completa.

EDITAR: No funciona con la URL como: https://yourdomain.com/en/usa

+25

Esta solución funciona solo si desea que todos los subdominios se envíen a www.tudominio.com. Si solo quiere forzar www, debe actualizar la segunda línea para que sea: 'RewriteCond% {HTTP_HOST}^yourdomain.com [NC]' –

+1

No consigo que ninguno de mis subdominios se reenvíe a www.mydomain.com usando la regla publicada en la pregunta ... – lol

+3

muy inteligente! Me gusta que forzó la comprobación HTTPS para devolver una "S" en el grupo de captura, que utilizó en la siguiente línea. muy elegante –

37

Esto lo hará:

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
+0

¡Simple y eficaz! – ChaseMoskal

+0

Gracias, pero ¿qué hay de https: //? –

1

Lo que sigue debe prefijo 'www' a cualquier petición que no tiene uno, y redirigir la solicitud editado al nuevo URI.

RewriteCond "%{HTTP_HOST}" "!^www\."   [NC] 
RewriteCond "%{HTTP_HOST}" "(.*)" 
RewriteRule "(.*)"   "http://www.%1$1" [R=301,L] 
3

Esto no funcionará con subdominios.

domain.com correctamente se le redirecciona a www.domain.com

pero

images.domain.com se le redirecciona a www.images.domain.com

En lugar de comprobar si el subdominio es "no www", compruebe si hay dos puntos:

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

Esto no funcionará con ciertos TLD, como .co.uk – kieranajp

+0

Me gusta esta solución. De todos modos para lograr lo mismo con TLDs como .co.uk? – TylersSN

+1

@iUseMagentoNow simplemente aumente los puntos, por ejemplo: 'RewriteCond% {HTTP_HOST}!^(. *) \. (. *) \. (. *) \. [NC] '(Estrictamente hablando, su TLD sigue siendo' .uk' y su dominio es 'something.co'.) – mirabilos

4

Si desea redirigir todas las peticiones sin www a su sitio a la versión www, todo lo que tiene que hacer es añadir el siguiente código a su archivo .htaccess:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
1
RewriteEngine On 

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 

Esto redirige a example.comwww.example.com con exclusión de los subdominios.

+0

Para mí esto parece estar enviando www.example.com a www.example.com jaja –

+0

@Albert Quizás esto se debe a la caché de su navegador. Borre su caché y vuelva a intentarlo. – starkeen

+0

¡Estás en lo correcto! Corrí de incógnito (Chrome) y funcionó bien, ¡gracias! –

0

Esto funcionó como magia para mí

RewriteCond% {}^HTTP_HOST sitename.com [NC] RewriteRule^(. *) $ https://www.sitename.com/ $ 1 [L, R = 301, Carolina del Norte]

Cuestiones relacionadas