Como redirecionar o domínio A para o domínio B usando apenas registros A e CNAME

45

Eu tenho 2 domínios hospedados com hosts diferentes. Preciso redirecionar o domínio A para o domínio B. Infelizmente não posso fazer um redirecionamento 301 do host A, mas só posso modificar / adicionar entradas DNS (registros A e CNAMEs) no host A.

Certamente é possível redirecionar www.DomainA.com para www.DomainB.com usando apenas registros A e CNAMEs?

No momento, as entradas DNS são:

DomainA.com.    3600    IN    SOA       ns1.HostA.net.
www             3600    IN    CNAME     www.DomainB.com.    
DomainA.com.    3600    IN    NS        ns1.HostA.net.  
DomainA.com.    3600    IN    NS        ns2.HostA.net.  
DomainA.com.    3600    IN    NS        ns3.HostA.net.

Eu quero redirecionar

DomainA.com -> DomainB.com
*.DomainA.com -> *.DomainB.com

Eu tentei a sugestão deste outro post, mas não funcionou.

Como posso conseguir isso apenas com A-Records e CNAMEs, por favor? Obrigado pelo seu conselho.

Prembo.

Prembo
fonte
2
Que tipo de redirecionamento você deseja alcançar? O DNS não é capaz de agir como um redirecionamento HTTP de forma alguma - não é possível alterar o host que um navegador está tentando acessar apenas no DNS.
Shane Madden
Entendo que um redirecionamento 301 é ideal, e é isso que pretendemos fazer no futuro próximo (infelizmente, o domínio A fica preso no host A por mais 50 dias e não pode ser transferido devido a um período de bloqueio. E o host A venceu ' não permita redirecionar HTTP, a menos que você pague por um 'pacote' extra). Então, por enquanto, estamos apenas tentando redirecionar todo o tráfego de qualquer maneira do domínio A para o domínio, antes de passarmos domínio A do outro lado para o Host B.
Prembo
11
O DNS não pode fazer redirecionamentos. A única coisa que o DNS pode fazer é o alias (um nome parece igual ao outro, como uma cópia). Isso não é o mesmo que enviar pessoas que chegam a um lugar para outro.
Chris S
Obrigado por esclarecer a diferença entre um redirecionamento HTTP e uma resolução / delegação de DNS. Eu entendo agora.
Prembo

Respostas:

37

Portanto, você não está olhando para o redirecionamento como tal (como acontece no nível do aplicativo, ou seja, no Apache / Nginx / em qualquer outro lugar), mas na resolução do DNS. O host no qual o DomainA está hospedado será ou nunca será atingido, com base na sua descrição, pois você deseja que as solicitações de DNS sejam resolvidas para os IPs do DomainB. A menos que esteja faltando alguma coisa em sua solicitação?

Como Shane apontou, o DNS não é capaz de redirecionar HTTP - esse é um dever do aplicativo / servidor da web. Você poderia fazer o DomainA e o DomainB resolverem o mesmo IP no DNS e tudo funcionaria. Mas se você deseja fazer isso por URL / caminho, isso não é possível - o DNS não é capaz disso - é um simples serviço DNS-> IP, o que está acontecendo com o URL real é a tarefa do servidor da web.

Após o comentário abaixo, o que eu faria é referenciar todos os registros DNS do DomainA para os mesmos IPs que o DomainB é apontado - dessa forma, você receberá a solicitação HTTP atingindo o hostB e, em seguida, é apenas uma questão de:

  1. criando um host virtual específico do Apache Name Baseed - que servirá arquivos de seu próprio DocumentRoot
  2. criando redirecionamento permanente no Apache assim:

Isso reescreverá qualquer coisa que venha ao DomainB para o DomainA que possa ser hospedado no mesmo servidor ou em outro lugar. Compreendo que a segunda opção seja provavelmente uma sobrecarga e não será necessária se você puder / tiver permissão para criar hosts virtuais baseados em nome no apache.

<VirtualHost *:80>
  ServerName DomainB
  Redirect permanent / http://DomainA/
</VirtualHost>

Eu iria com 1. - aponte todos os registros DNS do DomainA para os mesmos IPs que o DomainB está apontando e crie VirtualHosts baseados em nome no Apache.

giro
fonte
Sim, você entende corretamente - por favor, veja meu comentário acima. Então, quais entradas de DNS ajudariam a alcançar esse objetivo? Não há hospedagem na web no Host A, apenas o domínio é mantido lá. E queremos que todo o tráfego do domínio A seja resolvido no domínio B ... Muito obrigado pelo seu tempo.
Prembo
É o mesmo que adicionar ServerAlias domain Bao host virtual existente domain A?
BadHorsie
9

Como outros já declararam, não é possível executar o redirecionamento HTTP apenas com o DNS. DNS e HTTP trabalham juntos para redirecionar um usuário de uma página da web para outra.

Você pode usar o DNS por si só para fazer com que o domínio A mostre o mesmo conteúdo que o domínio B, mas o navegador exibirá o domínio A no URL. Você precisa ter muito cuidado com isso, pois é muito ruim do ponto de vista de SEO. Você terá problemas por "conteúdo duplicado", e os mecanismos de pesquisa o punirão por isso.

A maneira correta (de uma perspectiva de UX e SEO) de fazer esse trabalho é executar um redirecionamento HTTP do domínio A para o domínio B.

Você pode configurar manualmente seus servidores da Web (Apache, Nginx, IIS etc.) para fazer esse trabalho se você for tecnicamente capaz. Existem muitos bons recursos para ajudá-lo na Web.

Se você não pode ou não deseja controlar a infraestrutura, pode usar um serviço de redirecionamento de URL para executar este trabalho para você. Eu sou o fundador de um chamado EasyRedir , mas certamente existem outros.

wgrrrr
fonte
5

O domínio A precisa ter os mesmos endereços IP do domínio B. Não há necessidade de qualquer referência a B na definição de A. Os navegadores da Web não "seguem" CNAMEs como redirecionamento, eles manterão o mesmo nome de host e usarão o próprio registro do CNAME para resolver para um endereço IP.

Se você deseja que B apareça no navegador quando A é visitado (opcional e não relacionado ao DNS), é necessário corresponder ao host HTTP e redirecionar as solicitações no servidor da Web. com o Apache, você usaria mod_rewrite para fazer isso em uma definição de host virtual:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?domainB.com$
RewriteRule ^/(.*)$ http://www.domainA.com/$1 [R=301,L]
Kl4m
fonte
0

Claro que é possível redirecionar, com o seguinte truque:

  1. Crie uma nova zona primária padrão
  2. Nomeie o mesmo que o URL fictício para o qual você deseja redirecionar
  3. Verifique se esse nome fictício é diferente de qualquer nome DNS do AD
  4. Crie um registro com as seguintes entradas:

em branco ....................... A ......................... ... ip-addr-2

www ......................... A ....................... ..... ip-addr-2

O que temos aqui é redirecionamento, essencialmente. Um URL válido será resolvido com base na zona DNS principal do DNS existente. Um URL fictício será redirecionado para ip-addr-2. O que é importante é que o nome dessa entrada esteja em branco; portanto, ela cairá para a próxima entrada no registro e será redirecionada para ip-addr-2

Bran Kop
fonte
-1

Eu não tentei, mas acho que você pode fazer isso:

DomainA.com. CNAME DomainB.com.

Isso é, em vez de qualquer outro registro no arquivo de zona DomainA. Não SOA, nada.

Não tente fazer isso em um domínio que você gosta de trabalhar.

wfaulk
fonte
Não acredito que isso redirecione a resolução de subdomínios, apesar de você deixar de fora a SOA. O DNAME foi projetado para fazer isso, mas por algum motivo ninguém entende, CNAME e DNAME são mutuamente exclusivos.
Falcon Momot 5/05
2
Você não pode colocar CNAMEregistros em domínios nus / apicais como domain.com, mas você pode em subdomínios comowww.domain.com
Petrus Theron
Isso não será redirecionado , apenas resolverá o www.DomainA.com para o IP do DomínioB; e só funciona para subdomínios (não domínio nu0>
Wernight 14/09/16