
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 $1
denota tudo após o domínio conforme correspondido pelo ^(.*)$
padrão e %2
seria o subdomínio (então suponho que %1
seria "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/
Redirect
redireciona tudo do LHS para o RHS, mantendo a mesma estrutura de diretórios.
Como alternativa, uma solução ainda mais simples é apenas adicionar ServerAlias domain2
a 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_rewrite
você as destroça, então você pode fazer qualquer coisa com elas.
Se a parte opcional www lhe causar problemas, divida-a em duas RewriteCond
instruçõ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]