Назад | Перейти на главную страницу

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

У меня 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.

Таким образом, вы смотрите не на перенаправление как таковое (как это происходит на уровне приложения, то есть на 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.

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

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

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

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

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

Домен 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]

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

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

пустой ....................... А ......................... ... ip-адрес-2

www ......................... A ....................... ..... ip-адрес-2

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

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

DomainA.com. CNAME DomainB.com.

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

Не пытайтесь сделать это в домене, который вам нужен.