Использование 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 создайте запись A "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.
Earl Ruby

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.
Michiel

12
@Michiel Звучит как бесполезная конструкция, если у вас легкий доступ к proof-two.comвеб-серверам. Иногда крупные компании (и бюрократия) все усложняют намного сложнее, чем могло бы быть.
cregox 01

1
"затем перейдите туда, где вы размещаете proof-two.com, и настройте его так, чтобы он указывал на proof.proof-two.com на www.proof-two.com/path/index.htm" Как это сделать?
user2060451

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. функция. Перенаправление jobs.my-domain.com в my-domain.com/jobs Настройка вашей зоны DNS следующим образом : Хост записи: работа Тип: CNAME To: 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.
Renan

Можете ли вы скопировать свой реестр CNAME? Можете ли вы скопировать и свой перенаправленный сайт?
Альваро Агилар

1
@Renan Убедитесь, что исходный домен присутствует в DNS и может быть найден сервером redirect.center; также не будет работать переход на target-domain.com.redirect.center в браузере. См. Объяснение: github.com/udleinati/redirect.center/issues/…
redfish

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). Я обновлю свой ответ.
Gabriel

10

Чтобы ответить на исходный вопрос, нет, то, что вы хотите, невозможно с использованием только DNS (как все заявили). В дополнение ко всему, что уже упоминалось, еще одним вариантом является использование службы перенаправления URL-адресов. Эти типы служб могут позволить вам настроить множество различных типов перенаправления URL-адресов в зависимости от ваших потребностей. Например:

  1. Перенаправьте вершину домена на www. субдомен или наоборот
  2. Пересылка набора доменных имен в один пункт назначения (полезно для пересылки орфографических ошибок домена, старых названий компаний и т. Д.)
  3. Перенаправлять определенные доменные имена на страницы с глубокими ссылками (например, то, что хочет OP)

Сервис, который делает это, - 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 настройте перенаправление для этого сайта, чтобы перейти на ваш внешний сайт / путь, в моем случае это был наш размещенный каталог, к которому я хотел бы перейти на catalog.ourdomain.com. Отсюда все настройки выполняются в IIS. Обязательно включите анонимную аутентификацию, чтобы трафик не блокировался.


3

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

Итак, page1.html должен обслуживаться www.customer1.com и т. д.

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

    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 , Route 53 -> API Gateway возможен через пользовательские домены с внутренним использованием облачного интерфейса.

Это возможно с помощью Amazon Certification Manager, пользовательских доменов AWS Gateway и Route53, обратите внимание на ограничение us-east-1 на ACM

Надеюсь, это кому-то поможет


2

Хотя, как уже почти все заявили, невозможно использовать только DNS. В качестве обходного пути я бы предложил попробовать NGINX ( http://nginx.org/en/docs/http/request_processing.html ).

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

Ex. http://first.my-server.com перенаправляет на место A и http://second.my-server.com перенаправляет на место B, при этом оба используют один физический сервер.


0

Вы можете использовать мод перезаписи htaccess, перезаписать во вложенную папку, если пользователь запрашивает один конкретный домен, а не другой.


-1

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

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

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

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

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


-4

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

Я также хочу добавить раскрытие: я разработчик этой службы, и есть другие варианты.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.