Використання DNS для переадресації на іншу URL-адресу із контуром [закрито]


120

Я намагаюся перенаправити домен на інший через DNS.

Я знаю, що використання IN CNAME можливо.

www.proof.com IN CNAME www.proof-two.com.

Що мені потрібно - це перенаправлення на шлях. Коли хтось набирає www.proof.com, він повинен прийняти їхwww.proof-two.com/path/index.htm

Я знаю, що це можна зробити за допомогою засобів веб-сервера, але мені потрібно перенаправлення DNS.

Чи можливо це?


Якщо ви використовуєте домен google, ви можете використовувати його "Вперед домен" у меню зліва -> Веб-сайт.
John_J

Відповіді:


136

Ні, те, що ви просите, неможливо. DNS - це система дозволу імен і нічого не знає про HTTP.


93

якщо ви використовуєте AWS, перенаправлення на зразок

mail.foo.com --> mail.google.com/a/foo.com

можна налаштувати наступним чином:

  1. у s3 створіть порожнє відро "mail.foo.com"
  2. у розділі Властивості -> Статичний хостинг веб-сайтів встановіть "переспрямувати всі запити на: mail.google.com/a/foo.com"
  3. у route53 створіть запис "mail.foo.com"
  4. увімкніть "псевдонім" та встановіть псевдонім націлювання на відро "mail.foo.com"

не чисте рішення DNS, але воно працює;)

Але врахуйте, що переспрямовування пропускає всі параметри URL-адреси, наприклад: ...? Param1 = value1 & param2 = value2


3
Це чудова і дуже корисна відповідь для всіх, хто використовує AWS. Дякую! Солодкий спосіб подолання
Кен

6
Важливо зауважити: відро має бути названо таким, щоб відповідати імені хоста, яке перенаправлено на нього. Дивіться serverfault.com/a/584714/105720
Йордан Фельдштейн

1
Це працює як переспрямування до каталогу, але не до певної сторінки. Якщо ви перенаправите всі запити на "www.example.com/foo/bar/baz.html", AWS "корисно" додасть "/" до URL-адреси, перетворивши її на "www.example.com/foo/bar/baz .html / "і повернення помилки 404.
Граф Рубі

34

Я розумію, що це стара тема, але FWIW, якщо хтось інший шукає спосіб зробити це.

Поки dns не розуміє частину шляху URL-адреси, він зрозуміє субдомени, тому замість:

www.proof.com В CNAME www.proof-two.com/path/index.htm

Ви можете використовувати:

www.proof.com В CNAME proof.proof-two.com

потім перейдіть туди, де ви розміщуєте proof-two.com, і встановіть його на точку proof.proof-two.com на www.proof-two.com/path/index.htm.

~ завжди є більше ніж один спосіб шкірити кішку


2
Це звучить як марна конструкція, замість того, щоб довести proof.proof-two.com вказівку на www.proof-two.com/path/index.htm, можливо, ви так само добре зробите www.roof.com там, не потрібно додаткові записи DNS.
Міхель

12
@Michiel Це виглядає як марна конструкція, якщо у вас легкий доступ до proof-two.comвеб-серверів. Іноді великі компанії (і бюрократія) роблять все набагато складніше, ніж могло бути.
Крегокс

1
"потім перейдіть туди, де ви розміщуєте proof-two.com, і встановіть його на точку proof.proof-two.com на www.proof-two.com/path/index.htm" Як це зробити?
користувач2060451

17

У мене є особистий проект, який може допомогти вам у вирішенні цього питання. Це рішення з перенаправленням з відкритим кодом, яке дозволяє перенаправляти свій домен, просто змінюючи налаштування DNS. Посилання проекту: https://redirect.center/ .

Щоб перенаправити www.proof.com на www.proof-two.com, зберігаючи параметри URL-адреси, просто встановіть свій веб-запис www DNS на proof.com:

www.proof.com В CNAME www.proof-two.com.opts-uri.redirect.center.


Питання полягало у переадресації на повний URL-адресу шляху, а не лише на домен.
Тоні Чібукас

2
Це ще не повний шлях
Тоні Чібукас

2
Шлях можна підтримувати через службу ".opts-slash." функція. Перенаправляйте jobs.my-domain.com на my-domain.com/jobs Налаштуйте зону DNS таким чином: Запис хоста: Робота типу: CNAME До: www.my-domain.com.opts-slash.jobs.redirect.center
Девід Тернер

1
Це дійсно круто і просто, якщо ваш реєстратор не надає перенаправлення - приголомшливо!
Лука Стіб

1
Це прекрасно! Я припускав, що щось подібне існувало, але не змогло його знайти (їм потрібно працювати над їх SEO).
Метт Додж

11

Дійсно це легко з redirect.center

Якщо ви хочете створити CNAME як:

www.proof.com В CNAME www.proof-two.com/path/index.htm

використовуючи redirect.center, ваш CNAME виглядає так само канонічним, як:

www.proof.com В CNAME www.proof-two.com.opts-slash.path.opts-slash.index.htm.redirect.center.

Тепер, якщо ви хочете переспрямувати на веб-сайт https, можете додати цю опцію:

www.proof.com В CNAME www.proof-two.com.opts-slash.path.opts-slash.index.htm.opts-https.redirect.center.

Тепер ви можете створити CNAME в канонічному режимі з косою рисою на своїй долі.


Я це намагався, але це не працює. Все, що вона робить - це перенаправлення користувачів на сайт redirect.center.
Ренан

Чи можете ви скопіювати свій реєстратор CNAME? Чи можете ви скопіювати і ваш перенаправлений сайт?
Альваро Агілар

1
@Renan Переконайтесь, що вихідний домен присутній у DNS і може бути шуканий сервером redirect.center; також навігація до target-domain.com.redirect.center у веб-переглядачі не працюватиме. Дивіться пояснення: github.com/udleinati/redirect.center/isissue/…
риб

11

Редагувати

Здається, що саме мій провайдер (OVH) дозволяє такий переспрямування в межах своєї інфраструктури.

Дивіться: https://docs.ovh.com/gb/en/domains/redirect-domain-name/

Відповідь я зберігаю нижче заради архівації, але вона не надає жодної змістовної інформації.

Оригінальна відповідь

Я зробив це, використовуючи запис TXT.

Щоб переадресувати foo.bar.comна foo2.bar.com/path, просто додайте foo IN TXT "1|foo2.bar.com/path"у bar.comзону DNS.

Він також зберігає URL-адреси та параметри. Тож якщо ви спробуєте отримати доступ foo.bar.com/hello?foo=bar, ви будете перенаправлені на foo2.bar.com/path/hello?foo=bar.


6
Не могли б ви це трохи розім'яти? Чи є у вас посилання на те, як використовувати записи TXT?
Йосія

Чи це також збереже параметри URL-адреси?
andreas

1
Після розслідування здається, що OVH робить це для мене. Дивіться: ovh.com/fr/g1339.redirection-nom-de-domaine (fr). Я оновлю свою відповідь.
Габріель

10

Щоб відповісти на початкове запитання, ні, те, що ви хочете, неможливо, використовуючи лише DNS (як усі заявили). Крім усього згаданого, ще одним варіантом є використання послуги перенаправлення URL-адрес. Ці типи послуг дозволяють налаштувати безліч різних типів переспрямувань URL-адрес залежно від ваших потреб. Наприклад:

  1. Переслати вершину домену на www. субдомен або навпаки
  2. Переслати колекцію доменних імен до одного пункту призначення (корисно для пересилання помилок домену, старих імен компанії тощо)
  3. Пересилайте конкретні доменні імена на глибоко пов’язані сторінки (наприклад, те, що хоче ОП)

Сервіс, який робить це - EasyRedir . Повне розкриття: я розробив EasyRedir. Звичайно, є й інші варіанти, тому я закликаю вас озирнутися.


5

DNS не переспрямовує частину шляху URL-адреси, так що це стане неможливим.

Додавання

www.proof.com IN CNAME www.proof-two.com

буде прямий доступ від www.proof.com до www.proof-two.com, де вам потрібно буде скористатися конфігурацією веб-сервера, щоб направити користувачів на відповідну сторінку.


4

Моє рішення цієї проблеми було досить простим і прямим вперед. Все, що вам потрібно, це сервер IIS, який працює всередині домену.

Встановіть CNAME в DNS для вказівки на сервер IIS, використовуючи імена хостів у IIS для вирішення декількох сайтів на одному сервері IIS. Я використовую той же сервер IIS, щоб обробляти кілька піддоменів на зовнішніх сайтах.

Тоді в перенаправленнях налаштувань IIS для того, щоб цей сайт перейшов на ваш веб-сайт / шлях, - у моєму випадку я хотів зайти на наш розміщений каталог. Звідси все налаштування робиться в IIS. Обов’язково ввімкніть анонімну автентифікацію, щоб трафік не був заблокований.


3

Я припускаю, що у вас є такий сценарій: у вас є унікальний веб-сервер, на якому розміщені різні веб-сайти, кожен з яких повинен бути представлений окремим доменом:

Отже, сторінку1.html має обслуговувати www.customer1.com тощо.

  1. створити субдомен всередині серверу example.com dns (вашого веб-сервера):

    customer1.example.com

  2. у налаштуваннях віртуального сервера apache, картографуйте субдомен у каталозі, який містить веб-сайт для вашого клієнта №1, як це:

<VirtualHost *:80> SetEnv PAGE_ID "customer1" ServerName customer1.example.com ServerAlias www.customer1.com DocumentRoot /your/local/path/webserver/customer1 </VirtualHost> зверніть увагу на значення "ServerAlias", воно важливо для наступного кроку-

в цей момент ви зможете перейти на веб-сайт customer1, переглянувши:

customer1.example.com

  1. У налаштуваннях DNS для customer1.com ви повинні зробити запис CNAME:

    CNAME = www LOCATION = customer1.example.com

Тепер ви можете використовувати: www.customer1.com.


3

Зв'язана робота завершила все нижче:

Проблема:

http://a.com/p1/p2.html сьогодні має перейти на http://B.com/p1/p2.html
, але пізніше, коли налаштовано вручну / автоматично, той самий
http://a.com/p1 /p2.html слід перейти на http://C.com/p1/p2.html

Відповіді:

DNS - перетворює ім'я в IP-адресу

Хоча він може робити багато переспрямувань, завжди виводиться IP-адреса. DNS не розуміє шлях або частину протоколу URL-адреси, розуміє лише доменну частину, тобто a.com перетворюється лише на IP-адресу, тому коли ви натискаєте http: //a.com/p1/p2.html може бути перетворений на http://152.132.121.11/p1/p2.html, якщо ви неправильно налаштували в DNS, то ви отримаєте 152.132.121.11 (не http: //152.132. 121.11 / p1 / p2.html ), тож ви отримаєте помилку 400с (400, 403 тощо)

Перенаправлення - це http://a.com/p1/p2.html можна перетворити на http://b.com/p1/p2.html

Всі методи, такі як GET, POST, можуть працювати, якщо є будь-які заголовки та тіло, але там задіяний веб-сервер, це може стати пунктом відмови, тому масштабність та доступність будуть ключовими

Якщо ви перебуваєте на AWS , маршрут 53 -> шлюз API можливий через спеціальні домени, використовуючи внутрішньо хмарний фронт

Можливо, за допомогою Amazon Certification Manager, користувацьких доменів AWS Gateway & Route53, зверніть увагу на обмеження us-1 на ACM

Сподіваюся, що хтось допомагає


2

Хоча, як майже всі заявили вже, неможливо використовувати лише DNS. Як вирішення, я б запропонував спробувати NGINX ( http://nginx.org/en/docs/http/request_processing.html ).

TL; DR - У NGINX ви можете створити кілька віртуальних серверів, які можуть перенаправляти ваш запит на основі імені сервера.

Вих. http://first.my-server.com перенаправляє на місце A, а http://second.my-server.com перенаправляє на місце B, при цьому обидва ділять один фізичний сервер.


0

Ви можете використовувати мод перезапису htaccess, переписати у підпапку, якщо користувач запитує один конкретний домен, а не інший.


-1

Звичайно, можна перенаправити за допомогою наступного фокусу:

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

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

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

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


-4

Всі це вже заявляли, і я просто хочу надати вам ще один варіант послуги, яка може вам допомогти. www.301redirect.it - це безкоштовна послуга, яка може переспрямувати ваш домен (за допомогою wildcard) на будь-яку URL-адресу призначення.

Я також хочу додати розкриття: я розробник, який стоїть за цією послугою, і є інші варіанти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.