Наш сервер является официальным для "example.com". Если кто-то вводит example.com в веб-браузер, он нам понадобится для перенаправления на domain2.com. Поскольку у вас не может быть CNAME RR для имени корневой зоны, я попытался указать www для example.com на domain2.com следующим образом:
www IN CNAME domain2.com.
Это работает с Dig - это означает, что я запускаю dig, и он находит CNAME для www.example.com. Но в веб-браузере я ввожу www.example.com и получаю ошибку 404 not found. Меня не перенаправляют на domain2.com.
Вот результаты Dig для domian2.com:
;; ANSWER SECTION:
domain2.com. 17 IN CNAME anotherdomain.com.
anotherdomain.com. 140 IN A 192.168.1.100
anotherdomain.com. 140 IN A 192.168.1.100
Таким образом, у него есть собственный CNAME с двумя идентичными записями A. Не уверен, что это проблема. Я надеюсь, что кто-нибудь скажет мне, что я делаю не так, как это исправить, или если этот CNAME для другой компании CNAME не будет работать. ПРИМЕЧАНИЕ. Выполнение перенаправления в коде на данном этапе невозможно. Если возможно, потребуется решение DNS.
Вы не можете делать то, что хотите, так, как хотите - Интернет не работает так, как вы думаете ...
Когда вы входите http://www.example.com/test/index.html
в ваш веб-браузер, среди прочего, example.com собирается и используется для создания Хост: заголовок (см. раздел 14.3)
Имя www.example.com также используется для разрешения IP-адреса сервера. В вашем случае это изначально разрешается в серию CNAME, поэтому для каждого из них выполняется дополнительный запрос DNS, пока IP-адрес не будет разрешен.
Поскольку URL-адрес начинается с http: //, TCP-соединение устанавливается на порт 80 IP-адреса, который в конечном итоге был разрешен.
Веб-сервер может быть настроен для ответа для многих доменов. Когда вы подключаетесь к нему, он не знает, в какой из этих доменов вы звоните. Вот где используется заголовок хоста
GET /test/index.html HTTP/1.1
Host: www.example.com
Это указывает веб-серверу предоставить /test/index.html с виртуального хоста, настроенного для ответа на www.example.com.
Обратите внимание, что ваши записи CNAME использовались только для поиска адреса сервера. Это вообще не повлияло на заголовок хоста.
Чтобы решить вашу проблему, вам необходимо настроить виртуальный хост на www.example.com так, чтобы он отвечал перенаправлением на другой ваш домен.
DNS - это телефонная книга. В нем вы говорите: "Чтобы достичь www.domain2.com
, вызов 192.168.1.100
".
Веб-сервер - это то, что отвечает на телефонные звонки 192.168.1.100
. Когда он поднимает трубку, он не знает, что звонивший (то есть веб-браузер пользователя) читал в телефонной книге ранее. Так что он скажет "Привет, это anotherdomain.com
, чем я могу вам помочь? », и браузер пользователя запутается. Чтобы все работало, вы должны сообщить веб-серверу, что когда кто-то звонит 192.168.1.100
, он должен отвечать за оба www.domain2.com
и anotherdomain.com
.
Вы не можете заставить веб-сервер автоматически узнавать, какие имена ему кто-то занес в телефонную книгу. Вы должны указать это явно (обычно через его файлы конфигурации). Это не кажется вам очевидным, рассмотрим случай, когда какой-то сбитый с толку человек из Дальнего Востока случайно написал в своей местной телефонной книге, что my.pretty.horse
имеет номер 192.168.1.100
когда они действительно хотели написать, что это 192.168.100.1
. Ни вы, ни ваш веб-сервер никак не могли узнать об этом.