301 redirigiendo el segundo dominio al primero a través de htaccess, mod_rewrite mientras se conservan los subdominios: ¿algún consejo?

301 redirigiendo el segundo dominio al primero a través de htaccess, mod_rewrite mientras se conservan los subdominios: ¿algún consejo?

He estado buscando entre los tubos hoy, pero dado mi conocimiento limitado de mod_rewrite y expresión regular, estoy teniendo dificultades.

Lo que estoy tratando de lograr es reescribir el dominio1 (incluidos los subdominios) al dominio2 (incluidos los subdominios) e implementarlo como 301. El dominio 2 es el dominio principal, el dominio 1 solo (por el momento) está configurado junto y realmente simplemente ahí porque "lo es" (está pendiente un mejor uso, pensé en usarlo para aprender algo mientras tanto).

El dominio 2 está configurado como comodín y aloja micrositios que se muestran a través del subdominio -> reescritura interna de subcarpeta. (Con gusto publicaré el código para esto a pedido, no es complicado, pero me tomó un tiempo hacerlo funcionar sin reescrituras infinitas, por alguna extraña razón). El dominio 1 (el dominio temporal) no está configurado en absoluto, pero solo porque tengo varias opciones (un 'alias' o 'puntero' implementado por DirectAdmin, o agregado como un dominio separado y configurado como comodín). Si alguien va al dominio 1 (el dominio de reenvío), debería suceder lo siguiente:

http://sub.domain1.tld -> http://sub.domain2.tld
http://sub.domain1.tld/content.php -> http://sub.domain2.tld/content.php
http://domain1.tld -> http://domain2.tld
http://domain2.tld

Lo que me molesta es que todas las soluciones disponibles en la web asignan subdominios a directorios o solo están codificadas para atender solicitudes a través de http://domain1.tld/. Uno de mis antiguos accesos htaccess, para redirigir un .co.uk a un .com, tiene el comienzo del lugar al que quiero ir:

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.foo\.com [NC] 
RewriteRule ^(.*)$ http://foo.co.uk/$1 [R=301,L]

Entiendo que $1denota todo lo que está después del dominio según el ^(.*)$patrón, y %2sería el subdominio (así que supongo que %1sería "www." si estuviera presente en http_referer o fuera nulo).

...Sin embargo, aquí es donde me quedo estancado. ¿Cuál sería la forma más sencilla de reescribir para transferir cualquier variable a un nuevo nombre de dominio y no perder ningún subdominio en el camino?

Respuesta1

¿Hay alguna razón por la queRedirigirno funcionará, en la configuración del dominio1:

Redirect permanent / http://domain2.com/

Redirectredirige todo lo que está debajo del LHS al RHS, manteniendo la misma estructura de directorios.

Alternativamente, una solución aún más simple es simplemente agregar ServerAlias domain2la configuración para el dominio1, aunque eso no envía redireccionamientos, solo hace que el servidor responda a las solicitudes del dominio2 de la misma manera que el dominio1.

Respuesta2

Pruebe algo como (no probado):

RewriteMatch 301 http://(.*)domain1.com(.*) http://$1domain2.com$2

Respuesta3

Creo que quieres algo como esto:

RewriteCond %{HTTP_HOST} ^((www\.)?[^\.]+)\.foo\.com [NC]
RewriteRule ^(.*)$ http://%1.foo.co.uk/$1 [R=301,L]

Eso mantendrá el %1 (la parte del subdominio de foo.com, incluido www si está presente) y lo colocará en el lado derecho del archivo RewriteRule. Tenga en cuenta que estas son solo cuerdas mientras mod_rewritelas está manipulando, por lo que puede hacer cualquier cosa con ellas.

Si la parte opcional www le da problemas, divídala en dos RewriteConddeclaraciones:

RewriteCond %{HTTP_HOST} ^(www\.[^\.]+)\.foo\.com [NC] [OR]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.foo\.com [NC]
RewriteRule ^(.*)$ http://%1.foo.co.uk/$1 [R=301,L]

información relacionada