Як перенаправити домен A на домен B, використовуючи лише A-Records та записи CNAME


46

У мене розміщено 2 домени з різними хостами. Мені потрібно переадресувати Домен А на Домен B. На жаль, я не можу зробити переадресацію 301 з хоста А, але можу лише змінювати / додавати записи DNS (A-записи та CNAME) на хості А.

Невже можна перенаправити 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? Дякую за вашу пораду.

Прембо.


2
Якого типу переспрямування ви хочете досягти? DNS не здатний жодним чином діяти як перенаправлення HTTP - неможливо змінити те, що хост-браузер намагається отримати доступ лише в DNS.
Шейн Медден

Я розумію, що переспрямування 301 є ідеальним, і саме це ми маємо зробити найближчим часом (на жаль, домен A застряг із хостом A ще 50 днів, і його не можна перенести через період блокування. А хост A переміг " t дозволяти вам переспрямовувати HTTP, якщо ви не заплатите за додатковий "пакет"). Тож
наразі

1
DNS не може робити переадресації. Тільки річ DNS може зробити , це псевдонім (одне ім'я виглядає так само , як інший, як копія). Це не те саме, що відправляти людей, які приїжджають в одне місце, в інше місце.
Кріс S

Дякуємо за уточнення різниці між перенаправленням 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. створення конкретного віртуального хоста Baseed Name Apache - який буде обслуговувати файли з власного DocumentRoot
  2. створення постійного переспрямування на Apache таким чином:

Це дозволить переписати все, що надходить з DomainB до DomainA, яке можна розмістити на тому ж сервері або деінде. Я розумію, що другий варіант, ймовірно, є накладним та не потрібним, якщо ви можете / дозволено створювати віртуальне хости на основі імен на апачі.

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

Я б пішов з 1. - вкажіть усі записи DNS доменуA на ті самі IP-адреси, на які вказує DomainB, і створіть конкретні VirtualHosts на основі імен на Apache.


Так, ви правильно розумієте - будь ласка, дивіться мій коментар вище. То які записи DNS допоможуть досягти цієї мети? У хості A немає веб-хостингу, там просто розміщений домен. І ми хочемо, щоб весь трафік домену A вирішився на Домен B ... Дякую за ваш час.
Прембо

Це те ж саме, що для додавання 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 , але, безумовно, є й інші.


5

Домен A повинен мати ті ж IP-адреси, що і в домені B. Немає потреби в посиланні на B у визначенні А. Веб-браузери не "слідують" за 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]

0

Звичайно, можна переспрямувати, виконавши наступний трюк:

  1. Створіть нову стандартну первинну зону
  2. Назвіть його так само, як вигадану URL-адресу, на яку ви хочете переспрямувати
  3. Переконайтесь, що це вигадане ім’я відрізняється від будь-якого імені DNS AD
  4. Створіть запис із такими записами:

порожній ....................... А ......................... ... ip-addr-2

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

Що у нас є перенаправлення, по суті. Дійсна URL-адреса буде вирішена на основі існуючої первинної DNS-зони DNS. Вигадана URL-адреса буде переспрямована на ip-addr-2. Важливо те, що назва цього запису порожнє, тому воно впаде на наступний запис у записі та перенаправить на ip-addr-2


-1

Я не пробував цього, але думаю, що ти можеш це зробити:

DomainA.com. CNAME DomainB.com.

Це замість будь-яких інших записів у файлі зони DomainA взагалі. Ні SOA, нічого.

Не намагайтеся це робити в домені, над яким ви хочете працювати.


Я не вірю, що це перенаправить дозвіл субдоменів, незважаючи на те, що ви припинили SOA. DNAME призначений для цього, але чомусь ніхто не розуміє, CNAME та DNAME є взаємовиключними.
Falcon Momot

2
Ви не можете розміщувати CNAMEзаписи на голих / верхніх доменах, як-от domain.com, але можна на таких субдоменах, якwww.domain.com
Петрусь Терон

Це не буде переспрямовано , воно вирішить лише www.DomainA.com до IP-домену DomainB; і він працює лише для субдоменів (не голий домен0>
Wernight
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.