...a resposta MAYBE-dup resolve meu problema, mas a pergunta não.
Faça DUAS coisas:
Manter subdomínio antes
Mantenha o caminho após
Não consigo encontrar ONE .htaccess
ou Apache config que faça AMBOS em qualquer lugar no SE ou em outro lugar na web:
Via .htaccess
reescrita do Apache, encaminhe o domínio antigo, mas mantenha AMBOS os mesmossubdomain
E path/after
.
A partir de:
samesubdomain.
domain1.tld1
/same/path
Para:
samesubdomain.
domain2.tld2
/same/path
Eu tenho muitos subdomínios E endereços finais. Estou migrando um site antigo, mas preciso que meus inscritos antigos e suas páginas ainda funcionem no novo domínio.
Duplicatas não mas próximas: (As respostas abordam meu problema, mas a pergunta em si não descreve meu problema, mas isso também resolveu meu problema.)
Redirecionar subdomínio curinga para o mesmo subdomínio em domínio diferente
Cortesia da resposta MAYBE-dup , para o subdomínio, atualmente tenho:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+\.)?domain1.com$ [NC]
RewriteRule ^ http://%1domain2.com%{REQUEST_URI} [R=301,L]
...agora, preciso adicionar the/path
metade SEM entrar em conflito com este código.
Embora a pergunta vinculada não indique isso especificamente, o código também copia o caminho da URL (e qualquer string de consulta). Embora as respostas sejam reconhecidamente carentes de qualquer explicação.
Suposições:
domain1.tld1
(sem subdomínio) não redireciona paradomain2.tld2
.Perto do topo do seu arquivo raiz
.htaccess
:A
RewriteCond
diretiva captura o subdomínio da solicitação. A%1
referência inversa naRewriteRule
substituição é uma referência inversa ao subdomínio capturado (ou seja,([^.]+)
).A
$1
referência inversa contém o caminho da URL, capturado peloRewriteRule
padrão , ou seja.(.*)
.Observe que omiti especificamente o final
$
(âncora de fim de string) no CondPattern para corresponder ao FQDN, que termina em um ponto.Qualquer string de consulta é passada inalterada.
Observe que este é atualmente um redirecionamento 302 (temporário). Sempre teste com 302s para evitar problemas de cache. Se você já testou com 301s, precisará certificar-se de que limpou o cache do navegador.
O código já contém a parte do caminho do URL. Isso é o que a
%{REQUEST_URI}
parte está na string deRewriteRule
substituição . AREQUEST_URI
variável do servidor contém o caminho de URL completo. Esta é apenas outra maneira de fazer a mesma coisa que fiz acima - usei uma referência anterior$1
. (Observe que aREQUEST_URI
variável do servidor contém o prefixo de barra, enquanto a referência inversa que usei não contém, daí a diferença de barras na string de substituição .)Este código está faltando um escape de barra invertida no ponto literal em
.com
.Observe que esta solução torna o subdomínio opcional . Ele redirecionará
domain1.com
(sem subdomínio) paradomain2.com
.