Как определить доменное имя вашего сайта? - PullRequest
2 голосов
/ 09 сентября 2010

Я не знаю, был ли вопрос в названии достаточно ясным.

Допустим, у вас 2 или N доменов, указывающих на один и тот же IP-адрес, ваш сервер (в моем случае Windows Server с IIS)и вы хотите создать собственный сайт для каждого доменного имени, поэтому вам нужно определить, какой домен использует пользователь в настоящее время.

Должно быть два «пользовательских сайта».Одним из них является сайт приложения администрирования, на который указывает только одно доменное имя, а другим - приложение, которое обрабатывает несколько доменных имен и на его основе отображает различные сайты.

Хорошим примером является сеть shoutem.На http://www.shoutem.com/ находится страница администрирования и экземпляры приложений: http://zrikka.com/ и http://punkt.com.hr, отдельное приложение, которое обрабатывает разные доменные имена.

Возможно ли это?

Ответы [ 4 ]

3 голосов
/ 09 сентября 2010

То, чего вы хотите достичь, не обрабатывается внутри ASP.Net, а на уровне IIS.Вы указываете, какие домены должен обрабатывать каждый «сайт» в IIS.Как правило, у вас будет один, который обрабатывает все домены, которые разрешают IP, но у вас может быть несколько сайтов, привязанных к IP, если все они имеют совершенно разные документированные корни (то есть разные приложения / файлы сайта).Дело в том, что вам не нужно беспокоиться об этом в коде приложения.

Вот документы MSDN о том, как это сделать в IIS6 .

2 голосов
/ 09 сентября 2010

На уровне протокола HTTP это достигается с помощью заголовка Host:. Например, простой запрос GET для корневой страницы может выглядеть следующим образом:

GET / HTTP/1.1
Host: example.com

В этом случае заголовок Host: сообщает серверу, что браузер зашел на сайт example.com и ищет корневую страницу (/) с этого сайта. Другой запрос может быть:

GET / HTTP/1.1
Host: example.org

Если один и тот же сервер обрабатывает и example.com, и example.org, то HTTP-сервер может различать запросы таким образом.

В вашем случае IIS - это компонент, который получает эти заголовки и направляет запрос на соответствующий сайт.

1 голос
/ 09 сентября 2010

Если вы хотите, чтобы ваше одно приложение обрабатывало разные домены на одном и том же IP-адресе, вам следует проверить контекст запроса, например:

string host = HttpContext.Current.Request.Url.Host;
switch (host.ToLower())
{
    case "domain1.com":
    // do something
    break;
    case "domain2.com":
    // do something
    break;
    default: //unknown domain
    // do something
    break;
}

Зная, с какими адресами хоста вы можете обрабатывать, проверьте его.

Если вы хотите указать разные домены на разных веб-сайтах с одинаковым IP и IIS, вам следует настроить IIS, в этом случае проверить ответ Тима.

0 голосов
/ 04 июля 2013

Это даст вам домен вашего сайта:

HttpContext.Current.Request.Url.Authority

Или замените .Authority на что-то более подходящее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...