2010-08-20 13 views
5

Necesito redirigir desde un dominio principal como mydomain.com o www.midominio.com a sub.midominio.com, y esto debe funcionar para todas las solicitudes , por lo que mydomain.com/whatever va a sub.mydomain.com/whatever.301 Redirigir desde el dominio principal (www y no www) al subdominio

He intentado esto, que sólo funciona para los no-www en el dominio principal:

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

estoy más curioso justo con fines de aprendizaje más que cualquier otra cosa, pero ¿cuál es el beneficio de esta redirección? – JM4

Respuesta

3

Se podría condensar en una sola regla, así: punto

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

de Mark sobre el / es una consideración importante. Sin embargo, dado que está definiendo la regla en .htaccess, la entrada (y por asociación, la retro-referencia capturada) no comenzará con una barra diagonal, por lo que realmente necesita una explícita en este caso (como la que tenía).

Dado que sólo queremos que todo el camino de todos modos, utilizando %{REQUEST_URI} es más fiable en este sentido, ya que siempre tendrá una barra inicial, sin tener en cuenta el contexto que estamos usando la regla en.

2

también añadir:

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

Una cosa a tener en cuenta también es probable que no lo hace quiere ese último / en su RewriteRule, ya que agregará dos barras a la URL redirigida (por ejemplo, http://mydomain.com/foo.html se convierte en http://sub.mydomain.com//foo.html).

Cuestiones relacionadas