Jak przekierować domenę A do domeny B, używając tylko rekordów A i rekordów CNAME

46

Mam 2 domeny hostowane z różnymi hostami. Muszę przekierować domenę A do domeny B. Niestety nie mogę wykonać przekierowania 301 z hosta A, ale mogę jedynie modyfikować / dodawać wpisy DNS (A-Records i CNAME) na hoście A.

Czy na pewno można przekierować www.DomainA.com na www.DomainB.com przy użyciu tylko rekordów A i nazw CNAME?

Obecnie wpisy DNS to:

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.

Chcę przekierować

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

Wypróbowałem sugestię z tego innego postu, ale to nie zadziałało.

Jak mogę to osiągnąć tylko dzięki A-Records i CNAME? Dziękuję za radę.

Prembo.

Prembo
źródło
2
Jakiego rodzaju przekierowania chcesz osiągnąć? DNS nie może w żaden sposób działać jak przekierowanie HTTP - nie można zmienić hosta, do którego przeglądarka próbuje uzyskać dostęp w samym DNS.
Shane Madden
Rozumiem, że przekierowanie 301 jest idealne i właśnie to zamierzamy zrobić w najbliższej przyszłości (niestety domena A utknęła na hoście A przez kolejne 50 dni i nie można go przenieść z powodu okresu blokady. A host A wygrał ” t umożliwić przekierowanie HTTP, chyba że zapłacisz za dodatkowy „pakiet”). Na razie staramy się przekierować ruch z domeny A do domeny, zanim przeniesiemy domenę A do hosta B.
Prembo
1
DNS nie może przekierowywać. Tylko rzeczą DNS może zrobić, to alias (jedna nazwa wygląda tak samo jak inny, jak kopia). To nie to samo, co wysyłanie ludzi, którzy przybywają z jednego miejsca do innego.
Chris S
Dziękujemy za wyjaśnienie różnicy między przekierowaniem HTTP a rozpoznawaniem / delegowaniem DNS. Teraz rozumiem.
Prembo

Odpowiedzi:

38

Więc nie patrzysz na przekierowanie jako takie (tak jak dzieje się to na poziomie aplikacji, tj. Na Apache / Nginx / gdziekolwiek), ale raczej na rozdzielczość DNS. Host, na którym hostowana jest DomainA, będzie lub nigdy nie powinien zostać trafiony, na podstawie twojego opisu, ponieważ chcesz, aby żądania DNS były przetwarzane na adresy IP DomainB. Chyba że brakuje mi czegoś w twoim żądaniu?

Jak zauważył Shane, DNS nie może przekierowywać HTTP - to obowiązek aplikacji / serwera WWW. Możesz sprawić, aby DomainA i DomainB rozpoznały ten sam adres IP w DNS i wszystko działałoby. Ale jeśli chcesz to zrobić dla sposobu na adres URL / ścieżkę, to nie jest to możliwe - DNS nie jest w stanie tego zrobić - jest to prosta usługa DNS-> IP, to, co dzieje się z rzeczywistym adresem URL, jest zadaniem serwera.

Po komentarzu poniżej chciałbym odesłać wszystkie rekordy DNS dla domeny A do tych samych adresów IP, na które wskazuje DomainB - w ten sposób otrzymujesz żądanie HTTP uderzające w hostB, a następnie jest to po prostu kwestia:

  1. tworzenie konkretnego hosta wirtualnego opartego na nazwie Apache - który będzie obsługiwał pliki z własnego DocumentRoot
  2. tworzenie stałego przekierowania na Apache w następujący sposób:

Spowoduje to przepisanie wszystkiego, co przychodzi do DomainB do DomainA, które może być hostowane na tym samym serwerze lub w innym miejscu. Rozumiem, że druga opcja jest prawdopodobnie narzutem i nie jest konieczna, jeśli możesz / możesz tworzyć wirtualne hosty oparte na nazwie na Apache.

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

Wybrałbym 1. - skieruj wszystkie rekordy DNS domeny A na te same adresy IP, na które wskazuje DomainB i utwórz konkretne hosty wirtualne oparte na nazwie na Apache.

żyr
źródło
Tak, rozumiesz poprawnie - zobacz mój komentarz powyżej. Jakie wpisy DNS mogłyby pomóc w osiągnięciu tego celu? Na hoście A nie ma hostingu, tylko domena jest tam przechowywana. I chcemy, aby cały ruch do domeny A przeszedł do domeny B ... Wielkie dzięki za poświęcony czas.
Prembo
Czy to jest to samo, co dodanie ServerAlias domain Bdo istniejącego hosta wirtualnego domain A?
BadHorsie,
9

Jak stwierdzili inni, przekierowanie HTTP nie jest możliwe przy użyciu samego DNS. DNS i HTTP współpracują ze sobą w celu przekierowania użytkownika z jednej strony na drugą.

Możesz sam używać DNS, aby domena A wyświetlała tę samą treść co domena B, ale przeglądarka internetowa pokaże domenę A w adresie URL. Musisz być bardzo ostrożny, ponieważ jest to dość złe z punktu widzenia SEO. Wpadniesz w kłopoty z powodu „zduplikowanej zawartości”, a wyszukiwarki za to cię ukarają.

Prawidłowym (z punktu widzenia UX i SEO) sposobem na wykonanie tej pracy jest przekierowanie HTTP z domeny A do domeny B.

Możesz ręcznie skonfigurować serwery WWW (Apache, Nginx, IIS itp.), Aby działały dla Ciebie, jeśli jesteś w stanie technicznie. Istnieje wiele dobrych zasobów do pomocy w Internecie.

Jeśli nie możesz lub nie chcesz kontrolować infrastruktury, możesz skorzystać z usługi przekierowywania adresów URL, aby wykonać to zadanie za Ciebie. Jestem założycielem jednego o nazwie EasyRedir , ale z pewnością są inni.

wgrrrr
źródło
5

Domena A musi mieć takie same adresy IP jak w domenie B. Nie ma potrzeby odwoływania się do B w definicji A. Przeglądarki internetowe nie „podążają” za CNAME jako przekierowaniem, zachowują tę samą nazwę hosta i używają własnego rekordu CNAME do rozpoznania adresu IP.

Jeśli chcesz, aby B pojawiał się w przeglądarce podczas odwiedzania A (opcjonalny i niezwiązany z DNS), musisz dopasować Host HTTP i przekierować żądania na serwerze WWW. z Apache użyłbyś mod_rewrite, aby zrobić to tak w definicji hosta wirtualnego:

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

Oczywiście możliwe jest przekierowanie za pomocą następującej sztuczki:

  1. Utwórz nową standardową strefę podstawową
  2. Nazwij go tak samo jak fikcyjny adres URL, na który chcesz przekierować
  3. Upewnij się, że ta fikcyjna nazwa jest inna niż jakakolwiek nazwa AD DNS
  4. Utwórz rekord z następującymi wpisami:

puste ....................... A ......................... ... ip-addr-2

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

Zasadniczo mamy tutaj przekierowanie. Prawidłowy adres URL zostanie rozpoznany na podstawie istniejącej podstawowej strefy DNS DNS. Fikcyjny adres URL zostanie przekierowany na ip-addr-2. Ważne jest to, że nazwa tego wpisu jest pusta, więc spadnie do następnego wpisu w rekordzie i przekieruje do ip-addr-2

Bran Kop
źródło
-1

Nie próbowałem tego, ale myślę , że możesz to zrobić:

DomainA.com. CNAME DomainB.com.

Jest to w ogóle zamiast innych rekordów w pliku strefy DomainA. Bez SOA, nic.

Nie próbuj tego w domenie, na której zależy ci praca.

wfaulk
źródło
Nie wierzę, że przekieruje to rozdzielczość subdomen, pomimo pominięcia SOA. DNAME jest do tego przeznaczony, ale z jakiegoś powodu nikt nie rozumie, CNAME i DNAME wzajemnie się wykluczają.
Falcon Momot,
2
Nie możesz umieszczać CNAMErekordów w takich domenach nagich / wierzchołkowych jak domain.com, ale możesz w subdomenach takich jakwww.domain.com
Petrus Theron
Nie spowoduje to przekierowania , spowoduje jedynie rozpoznanie adresu www.DomainA.com pod adresem IP domeny B; i działa tylko dla subdomen (nie nagiej domeny0>
Wernight