Redirigir no www a www en .htaccess

Resuelto Paul Sanchez asked hace 12 años • 13 respuestas

Tengo esto en mi archivo .htaccess:

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

pero cada vez que accedo a un archivo en mi raíz, http://example.com/robots.txtse redirigirá a http://www.example.comrobots.txt/.

¿Cómo puedo corregir esto para que se redirija correctamente a http://www.example.com/robots.txt?

Paul Sanchez avatar Aug 21 '12 15:08 Paul Sanchez
Aceptado

Cambie su configuración a esto (agregue una barra):

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

O la solución que se describe a continuación (propuesta por @absiddiqueLive ) funcionará para cualquier dominio:

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

Si necesita admitir http y https y conservar la opción de protocolo, intente lo siguiente:

RewriteRule ^login\$ https://www.%{HTTP_HOST}/login [R=301,L]

Donde reemplaza logincon checkout.phpo cualquier URL que necesite para admitir HTTPS.

Sin embargo, yo diría que esta es una mala idea. Para conocer el razonamiento , lea esta respuesta .

Randall Hunt avatar Aug 21 '2012 08:08 Randall Hunt

Aquí está la solución correcta que admite https y http:

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

UPD.: para dominios como .co.uk, reemplace

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$

con

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+\.[^.]+$
Alexey Kosov avatar Nov 28 '2014 08:11 Alexey Kosov
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

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

Para HTTPS

RewriteCond %{HTTPS}s ^on(s)|

RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]
abSiddique avatar Mar 10 '2014 12:03 abSiddique

El siguiente ejemplo funciona tanto en SSL como en no SSL y es mucho más rápido ya que utiliza una sola regla para administrar http y https.

RewriteEngine on


RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

[Probado]

Esto redirigirá

http

  • http://ejemplo.com

a

  • http://www.ejemplo.com

https

  • https://ejemplo.com

a

  • https://www.ejemplo.com
Amit Verma avatar Apr 23 '2016 07:04 Amit Verma