Как перенаправить домен A в домен B, используя только записи A-Records и CNAME

46

У меня есть 2 домена, размещенные на разных хостах. Мне нужно перенаправить домен A в домен B. К сожалению, я не могу выполнить перенаправление 301 с хоста A, но могу только изменять / добавлять записи DNS (записи A и CNAME) на хосте A.

Конечно, можно перенаправить www.DomainA.com на www.DomainB.com, используя только A-записи и CNAME?

В настоящее время DNS-записи:

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.

Я хочу перенаправить

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

Я попробовал предложение из этого другого поста, но это не сработало.

Как мне добиться этого только с помощью A-Records и CNAME, пожалуйста? Спасибо за совет.

Prembo.

Prembo
источник
2
Какой вид перенаправления вы хотите достичь? DNS никак не может действовать как перенаправление HTTP - невозможно изменить хост, к которому браузер пытается получить доступ только в DNS.
Шейн Мэдден
Я понимаю, что перенаправление 301 является идеальным, и это то, что мы намерены сделать в ближайшем будущем (к сожалению, домен A застрял на хосте A еще на 50 дней и не может быть перенесен из-за периода блокировки. И хост A победил ' t позволяет вам выполнять перенаправление HTTP, если вы не заплатите за дополнительный «пакет»). Поэтому в настоящее время мы просто пытаемся перенаправить любой трафик в любом случае из домена A в домен, прежде чем переместить домен A на хост B.
Prembo
1
DNS не может делать перенаправления. Только вещь DNS может сделать , это псевдоним (одно имя выглядит так же , как другой, как копия). Это не то же самое, что отправлять людей, которые приезжают из одного места в другое.
Крис С
Спасибо за разъяснение разницы между перенаправлением HTTP и разрешением / делегированием DNS. Теперь я понимаю.
Прембо

Ответы:

38

Таким образом, вы смотрите не на перенаправление как таковое (как это происходит на уровне приложения, то есть на Apache / Nginx / где угодно), а скорее на разрешение DNS. Хост, на котором размещен DomainA, будет или не должен попадать в зависимости от вашего описания, поскольку вы хотите, чтобы запросы DNS были разрешены для IP-адресов DomainB. Если я не пропустил что-то в вашем запросе?

Как отметил Шейн, DNS не способен к перенаправлению HTTP - это обязанность приложения / веб-сервера. Вы можете заставить DomainA и DomainB разрешать один и тот же IP в DNS, и все будет работать. Но если вы хотите сделать это для каждого URL / пути, то это невозможно - DNS на это не способен - это простая служба DNS-> IP, то, что происходит с реальным URL, является задачей веб-сервера.

После комментария, приведенного ниже, я хотел бы отнести все записи DNS для DomainA к тем же IP-адресам, на которые указывает DomainB - таким образом, вы получите HTTP-запрос, поражающий hostB, и тогда это будет просто:

  1. создание конкретного виртуального хоста Apache Name Baseed, который будет обслуживать файлы из собственного DocumentRoot
  2. создать постоянный редирект на Apache следующим образом:

Это перезапишет все, что приходит в DomainB, в DomainA, которое может быть размещено на том же сервере или где-то еще. Я ценю, что второй вариант, вероятно, является дополнительным и не обязателен, если вы можете / можете создавать виртуальные хосты на основе имен на apache.

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

Я бы пошел с 1. - Укажите все DNS-записи DomainA на тот же IP-адрес, на который указывает DomainB, и создайте особые виртуальные хосты на основе имен в Apache.

круговращение
источник
Да, вы правильно поняли - см. Мой комментарий выше. Итак, какие записи DNS помогут достичь этой цели? На хосте А нет веб-хостинга, там находится только домен. И мы хотим, чтобы весь трафик в домен А перешел в домен Б ... Большое спасибо за ваше время.
Прембо
Это то же самое, что добавить ServerAlias domain Bв существующий виртуальный хост для domain A?
BadHorsie
9

Как уже говорили другие, невозможно выполнить перенаправление HTTP только с DNS. DNS и HTTP работают вместе, чтобы перенаправить пользователя с одной веб-страницы на другую.

Вы можете использовать DNS самостоятельно, чтобы домен A показывал то же содержимое, что и домен B, но веб-браузер будет отображать домен A в URL. Вы должны быть очень осторожны с этим, так как это довольно плохо с точки зрения SEO. У вас будут проблемы с «дублированным контентом», и поисковые системы накажут вас за это.

Правильный (с точки зрения UX и SEO) способ выполнить эту работу - выполнить HTTP-перенаправление с домена A на домен B.

Вы можете вручную настроить свои веб-серверы (Apache, Nginx, IIS и т. Д.), Чтобы выполнить эту работу за вас, если у вас есть техническая возможность. Есть много хороших ресурсов, чтобы помочь с этим в Интернете.

Если вы не можете или не хотите контролировать инфраструктуру, вы можете использовать службу перенаправления URL-адресов, чтобы выполнить эту работу за вас. Я являюсь основателем компании EasyRedir , но есть и другие.

wgrrrr
источник
5

Домен A должен иметь те же IP-адреса, что и в домене B. Нет необходимости в какой-либо ссылке на B в определении A. Веб-браузеры не «следуют» за CNAME в качестве перенаправления, они сохраняют то же имя хоста и используют собственную запись CNAME для преобразования в IP-адрес.

Если вы хотите, чтобы B отображался в браузере при посещении A (необязательно и не связано с DNS), вам необходимо сопоставить HTTP-хост и перенаправить запросы на веб-сервер. с Apache вы бы использовали mod_rewrite, чтобы сделать это следующим образом в определении виртуального хоста:

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

Конечно, можно перенаправить с помощью следующего трюка:

  1. Создать новую стандартную первичную зону
  2. Назовите его так же, как вымышленный URL, на который вы хотите перенаправить
  3. Убедитесь, что это вымышленное имя отличается от любого имени DNS AD
  4. Создать запись A со следующими записями:

пустой ....................... ......................... ... IP-адр-2

WWW ......................... ....................... ..... IP-адр-2

По сути, мы имеем здесь перенаправление. Действительный URL будет разрешен в зависимости от существующей первичной DNS-зоны DNS. Придуманный URL будет перенаправлен на ip-addr-2. Что важно, так это то, что имя этой записи не заполнено, поэтому оно будет переходить к следующей записи в записи и перенаправлять на ip-addr-2.

Бран Коп
источник
-1

Я не пробовал это, но я думаю, что вы можете сделать это:

DomainA.com. CNAME DomainB.com.

Это вместо любых других записей в файле зоны DomainA вообще. Нет SOA, ничего.

Не пытайтесь сделать это на домене, который вам небезразличен.

wfaulk
источник
Я не верю, что это перенаправит разрешение субдоменов, несмотря на то, что вы отказались от SOA. DNAME предназначен для этого, но по какой-то причине никто не понимает, CNAME и DNAME являются взаимоисключающими.
Сокол Момот
2
Вы не можете размещать CNAMEзаписи на доменах типа «голый» / «апекс», например domain.com, но вы можете размещать их на таких поддоменах, какwww.domain.com
Petrus Theron,
Это не будет перенаправлять , это только разрешит www.DomainA.com к IP Домена B; и это работает только для поддоменов (не голые domain0>
Wernight