У меня как-то конкретная настройка. Это действительно связано с некоторыми ограничениями, которые я не могу обойти: есть домены 1 и 2, которые принадлежат мне, и внешний URL, который мне не принадлежит:
Моя цель - перенаправить http://sub.start.com (и https: // ...) к http://target.com/my/site?a=1. Теперь об ограничениях:
Как достичь своей цели? Вот что я настроил до сих пор:
Что работает, так это редирект http://sub.root.com к http://target.com/my/site?a=1. Что не работает:
Кроме того, есть ли способ достичь моей цели с помощью этой точной настройки? Я думаю включить sub.start.com, а также sub.root.com в свой SSL-сертификат на root.com. Решит ли это все проблемы?
Я ожидал, что запись CNAME «проигнорирует» сервер start.com. Запрос должен идти прямо на root.com, не так ли?
Ложное ожидание, которое обсуждается здесь снова и снова: перенаправление выполняется по протоколу HTTP. После разрешения с помощью CNAME
и A
DNS записывает, что запрос направляется напрямую на IP-адрес, не зная, что произошло на уровне DNS. CNAME
не будет выполнять перенаправление HTTP.
Затем запрос содержит исходное имя хоста в адресной строке как HTTP 1.1. Host
заголовок
GET / HTTP/1.1
Host: sub.start.com
и веб-сервер отвечает содержимым, настроенным для этого виртуального хоста. Это имя хоста и это имя хоста также используются, когда браузер сравнивает адрес с сертификатом SSL. Это сравнение выполняется перед отправкой заголовков и до того, как вообще произойдет какое-либо перенаправление.
Настройка всех других имен хостов как перенаправления на каноническое имя хоста в конфигурации вашего веб-сервера решает проблему перенаправления. Имея все имена хостов как альтернативные имена субъектов в вашем сертификате решает сообщения об ошибках, которые получают ваши пользователи.