Как перенаправить сайт A на сайт B с помощью записей A или CNAME

У меня есть 2 хоста, и я хотел бы указать субдомен на хосте один на субдомен на хосте два:

subdomain.hostone.com --> subdomain.hosttwo.com

Я добавил запись CNAME для хоста, которая указывает на subdomain.hosttwo.com, но все, что я получаю, это ошибка «400 Bad Request».

Может ли кто-нибудь увидеть, что я делаю неправильно?


person Peter Coulton    schedule 19.08.2008    source источник
comment
Я не вижу, что это не по теме. Конфигурация DNS находится в области программирования.   -  person superluminary    schedule 18.09.2013
comment
@superluminary: оффтоп означает, что мод не знает области, или у него был плохой день с прической, или ему нужен значок для закрытия тикета. В данном случае вопрос больше подходит для ServerFault ИМХО, поэтому его надо было перенести, а не закрывать.   -  person SamGoody    schedule 06.11.2013
comment
Не могу не согласиться, этот пост следует либо открыть повторно, либо перенести, конфигурация DNS охватывает обе области.   -  person Ben Personick    schedule 05.10.2017


Ответы (7)


Попробуйте изменить его на «субдомен -> субдомен.hosttwo.com».

CNAME — это псевдоним для определенного домена, поэтому, когда вы заходите в панель управления hostone.com, вам не нужно вводить полное имя в псевдоним CNAME.

Что касается ошибки, которую вы получаете, можете ли вы войти на subdomain.hostwo.com и проверить журналы?

person Eric Z Beard    schedule 19.08.2008
comment
чем отличается от обычного перенаправления URI и перенаправления CNAME? - person Elankeeran; 09.04.2012
comment
Перенаправление URL-адреса @Elankeeran может иметь добавленный к нему путь - CNAMES могут быть сделаны только из полных доменов. например. URL-адрес перенаправляет поддомен (например, www) на ‹Протокол› ‹[Поддомен.]Домен.TLD›[/Путь[/...]] (например, https://www.example.com/sites/xyz), где в качестве поддомена CNAME (например, www) на ‹[Поддомен.] Домен.TLD›(например, ghs.google.com) - person Ujjwal Singh; 17.10.2012
comment
CNAME — это псевдоним для записи A или AAAA, которая никогда не может быть доменом, но всегда является именем внутри домена или доменным именем, для краткости. - person Markus W Mahlberg; 28.11.2015
comment
@MarkusWMahlberg, вы добавили предложенные мной правки под своим cname!! - person Ali Abbasinasab; 29.11.2015
comment
@AliAbbasinasab каким-то образом улучшил ваше редактирование во время проверки. Ведь речь идет об редактировании, не так ли? - person Markus W Mahlberg; 29.11.2015

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

Я согласен, что самое простое (и лучшее решение для целей SEO) — это перенаправление 301. В IIS это довольно тривиально, вы должны создать сайт для subdomain.hostone.com, после создания сайта щелкните его правой кнопкой мыши и перейдите в свойства. Нажмите на вкладку «Домашний каталог» в открывшемся окне свойств сайта. Выберите переключатель «Перенаправление на URL-адрес», введите URL-адрес нового сайта (http://subdomain.hosttwo.com) и установите флажки для "Точный URL-адрес, указанный выше", "Постоянное перенаправление для этого ресурса" (этот второй флажок вызывает перенаправление 301 вместо перенаправления 302). Нажмите OK, и все готово.

Или вы можете создать страницу на сайте http://subdomain.hostone.com, используя один из следующих способов: методы (в зависимости от того, что поддерживает хостинговая платформа)

Перенаправление PHP:


<?
Header( "HTTP/1.1 301 Moved Permanently" ); 
Header( "Location: http://subdomain.hosttwo.com" ); 
?>

ASP-перенаправление:


<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://subdomain.hosttwo.com"
%>

Перенаправление ASP.NET:


<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://subdomain.hosttwo.com");
}
</script>

Теперь, если ваша запись CNAME создана правильно, единственная проблема, с которой вы столкнулись, заключается в том, что сайт создан для http://subdomain.hosttwo.com использует общий IP-адрес и заголовки узлов, чтобы определить, какой сайт следует отображать. Чтобы решить эту проблему в IIS, в диспетчере IIS на веб-сервере щелкните правой кнопкой мыши сайт subdomain.hosttwo.com и выберите «Свойства». На отображаемой вкладке «Веб-сайт» вы должны увидеть кнопку «Дополнительно» рядом с IP-адресом, который вам нужно будет щелкнуть. В появившемся окне «Расширенная идентификация веб-сайта» нажмите «Добавить». Выберите тот же IP-адрес, который уже используется subdomain.hosttwo.com, введите 80 в качестве TCP-порта, а затем введите subdomain.hosttwo.com в качестве значения заголовка узла. Нажимайте OK, пока не вернетесь в главное окно диспетчера IIS, и все должно быть хорошо. Откройте браузер и перейдите на http://subdomain.hostone.com, и вы увидите сайт по адресу Появляется http://subdomain.hosttwo.com, даже если ваш URL показывает http://subdomain.hostone.com

Надеюсь, это поможет...

person Brian G Swanson    schedule 19.08.2008
comment
Я почти уверен, что функция PHP header() написана строчными буквами. - person Austin Adams; 06.07.2011
comment
@UncleNinja: Хотя PHP определяет функцию header() как все строчные буквы (и именно так ее следует использовать в коде), язык PHP в этом отношении не чувствителен к регистру, поэтому Header() по-прежнему будет работать нормально. - person MrWhite; 21.05.2012
comment
Не забудьте добавить apache правило перенаправления Redirect 301 / http://example.com/. Можно использовать .htaccess для этого. - person hitautodestruct; 23.12.2013
comment
@w3d w3d То, что это сработает, не означает, что писать плохой код, не соответствующий стандартам, — хорошая практика. Из руководства по PHP: Примечание. Имена функций указаны в регистре. -нечувствителен, хотя обычно считается хорошим тоном вызывать функции так, как они появляются в их объявлении. Я не знаю ни одного разработчика даже с небольшим опытом, который написал бы функцию как Header(), потому что это > определяется как header(). Тот факт, что PHP позволяет вам писать его без учета регистра, является другим вопросом. - person BadHorsie; 07.01.2016
comment
@BadHorsie Да, я согласен. Я думал, что сказал именно это: PHP определяет функцию header() как строчную (и именно так ее следует использовать в коде). Я просто сказал, что это сработает, поскольку предыдущий комментарий, похоже, подразумевал, что это может и не работать. При проверке кода полезно иметь возможность быстро отличить ошибку от того, что в противном случае является просто передовой практикой, и это все, что мой комментарий действительно должен был передать. - person MrWhite; 08.01.2016
comment
Является ли использование перенаправления php (например) лучшей практикой? Конечно, это можно было бы обработать на уровне DNS, который немного быстрее (очень немного)? Или я ошибаюсь в этой оценке? Есть ли какие-либо другие преимущества такой работы по сравнению с использованием DNS ANAME или CNAME? Будут ли CDN иметь какой-либо эффект, то есть кэшируют ли они DNS лучше, чем перенаправления php или что-то в этом роде? - person Eoin; 12.04.2017

Похоже, веб-сервер на hosttwo.com не пропускает неопределенные домены. Вы также сказали, что хотите сделать перенаправление, на самом деле это не метод перенаправления. Если вы купили этот домен через GoDaddy, вы можете просто воспользоваться их службой перенаправления.

person Nick Berardi    schedule 19.08.2008
comment
или сменить хозяина :) - person Eoin; 12.04.2017

В наши дни многие владельцы сайтов используют службы CDN, которые извлекают данные с сервера CDN. Если это ваш случай, то у вас остается два варианта:

  1. Создайте поддомен и отредактируйте DNS, добавив запись CNAME.

  2. Не создавайте поддомен, а создайте только запись CNAME, указывающую на ваш временный URL-адрес DNS.

Это решение подразумевает только извлечение кода из CDN, который покажет, что он извлекает данные из cdn.sitename.com, но фактически извлекает их из вашего хоста CDN.

person Katie    schedule 30.11.2010

Вы можете сделать DNS-имя только для другого IP-адреса, поэтому, если вы используете виртуальные хосты, перенаправление с помощью DNS не будет работать.

Когда вы вводите subdomain.hostone.com в своем браузере, он будет использовать DNS для получения своего IP-адреса (если это CNAME, он будет продолжать попытки, пока не получит IP-адрес из записи A), затем он подключится к этому IP и отправит HTTP-запрос с

Host: subdomain.hostone.com 

где-то в заголовках http.

person Michał Piaskowski    schedule 19.08.2008

Вероятно, лучше/проще всего настроить 301 переадресацию. Не требуется взлом DNS.

person Chris Conway    schedule 19.08.2008

Вы можете сделать это несколькими способами, отличными от DNS. Целевая страница subdomain.hostone.com может иметь перенаправление HTTP. Веб-сервер на hostone.com можно настроить на перенаправление (легко в Apache, не уверен в IIS) и т. д.

person xanadont    schedule 19.08.2008