301 redirecionando o segundo domínio para o primeiro via htaccess, mod_rewrite preservando subdomínios - alguma dica?

301 redirecionando o segundo domínio para o primeiro via htaccess, mod_rewrite preservando subdomínios - alguma dica?

Estive procurando tubos hoje, mas devido ao meu conhecimento limitado de mod_rewrite e expressões regulares, estou lutando.

O que estou tentando alcançar é reescrever o domínio1 (incluindo subdomínios) para o domínio2 (incluindo subdomínios) e implementado como 301. O domínio 2 é o domínio principal, o domínio 1 é apenas (por enquanto) configurado ao lado e realmente só está lá porque 'está' (um uso melhor está pendente, pensei em usá-lo para aprender algo enquanto isso).

O domínio 2 é configurado como curinga e hospeda microsites que são exibidos via subdomínio -> reescrita interna da subpasta. (ficarei feliz em postar o código para isso mediante solicitação, não é complicado, mas demorei um pouco para fazê-lo funcionar sem reescritas infinitas, por algum motivo estranho). O domínio 1 (o domínio temporário) não está configurado, mas apenas porque me deparo com várias opções (um 'alias' ou 'ponteiro' implementado pelo DirectAdmin ou adicionado como um domínio separado e configurado como curinga). Se alguém for para o domínio 1 (o domínio de encaminhamento), isso deverá acontecer:

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

O que me incomoda é que todas as soluções disponíveis na web mapeiam subdomínios para diretórios e são codificadas apenas para lidar com solicitações via http://domain1.tld/. Um dos meus antigos htaccesses, para redirecionar um .co.uk para um .com, tem o início de onde eu quero ir:

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

Entendo que isso $1denota tudo após o domínio conforme correspondido pelo ^(.*)$padrão e %2seria o subdomínio (então suponho que %1seria "www." se estivesse presente no http_referer ou nulo?)

...No entanto, é aqui que fico preso. Qual seria a maneira mais simples de reescrever para transportar quaisquer variáveis ​​para um novo nome de domínio - e não perder nenhum subdomínio ao longo do caminho?

Responder1

Existe uma razão para issoRedirecionarnão funcionará, na configuração do domínio1:

Redirect permanent / http://domain2.com/

Redirectredireciona tudo do LHS para o RHS, mantendo a mesma estrutura de diretórios.

Como alternativa, uma solução ainda mais simples é apenas adicionar ServerAlias domain2a configuração do domínio1, embora isso não envie redirecionamentos, apenas faça o servidor responder às solicitações do domínio2 da mesma forma que o domínio1.

Responder2

Tente algo como (não testado):

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

Responder3

Acho que você quer algo assim:

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

Isso manterá o% 1 (a parte do subdomínio de foo.com, incluindo www, se presente) e o colocará no RHS do arquivo RewriteRule. Tenha em mente que estas são apenas cordas enquanto mod_rewritevocê as destroça, então você pode fazer qualquer coisa com elas.

Se a parte opcional www lhe causar problemas, divida-a em duas RewriteCondinstruções:

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

informação relacionada